整理下log4net日志
今天整理了下log4net日志,记录一下。。。
日志是一个系统排错的重要组成,有在之前的.NET中,微软还没有提供过像样的日志框架,目前能用的一些框架比如Log4Net、NLog、CommonLogging......
说下Log4net,它是.net平台上的一个日志框架,我接触的时间也不长,但是看着各开源库都在用这个于是前段时间也尝试去了解了一下,然后在自己的练手项目上试试看。
首先让我认识到Log4net强大的地方就是它的多目标输出,可以输出到控制台、文件、数据库、系统事件、Email等,几乎无所不能。然后它可以通过配置让日志系统实时生效,比如说在服务运行的过程中修改配置改变输出目标,改变日志等级等,均不用重启程序。但是Log4net也有一个让我比较头痛的地方就是感觉配置过于复杂,根本记不住,每次都必须去查阅资料。
先说下Log4net的基本配置结构:
<?xml version="1.0"?>
<configuration> <configSections>
<!--log4配置节-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections> <log4net>
</log4net>
</configuration>
基本都机构就是这样 ,configuration节点里面包含configSection、log4net,这两个节点需要放在最前面。
接下来就是配置了☞<?xml version="1.0"?>
<configuration> <configSections>
<!--log4配置节-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections> <log4net>
<!--根配置-->
<root> <!--日志级别:可选值: OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL --> <level value="ALL"/> <!--输出到调试日志: Debug.log-->
<appender-ref ref="DebugAppender"/>
<!--输出到信息日志: Info.log-->
<appender-ref ref="InfoAppender"/>
<!--假装这里有多种日志-->
<!--数据库日志-->
<!--<appender-ref ref="SqlAppender"/>-->
</root>
</log4net>
</configuration>
在log4net节点中有root根节点(log4net节点下支持的子元素有:appender,logger,renderer,root,param ,其中root只能有一个,其他的0个或多个),root节点下有一个<level value="ALL"/>节点,它表示日志级别为ALL(ALL级别最低,可记录日志级别高于它的级别)
<!--日志级别:可选值: OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL -->
appender-ref节点都ref是要引用的appender的名字,下文中的appender name="DebugAppender"就是对于<appender-ref ref="DebugAppender"/>这个级别都输出日志的配置。
接下来就是各级别的详细输出配置:
<configuration> <configSections>
<!--log4配置节-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections> <log4net>
<!--根配置-->
<root> <!--日志级别:可选值: OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL --> <level value="ALL"/> <!--输出到调试日志: Debug.log-->
<appender-ref ref="DebugAppender"/>
<!--输出到信息日志: Info.log-->
<appender-ref ref="InfoAppender"/>
<!--假装这里有多种日志--> <!--数据库日志-->
<!--<appender-ref ref="SqlAppender"/>-->
</root>
<!--Debug.log-->
<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender,log4net">
<!--过滤-->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
<!--目录路径,可以是相对路径或绝对路径-->
<param name="File" value="c:/log/manage/debug/"/>
<!--文件名,按日期生成文件夹-->
<param name="DatePattern" value="/yyyy-MM-dd/"debug.log""/>
<!--追加到文件-->
<appendToFile value="true"/>
<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
<rollingStyle value="Composite"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="2MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/>
</layout>
</appender>
</log4net>
</configuration>
注意<appender></appender>节点都type,RollingFileAppender代表的是将日志以回滚文件的形式写到文件中,想这样类型很多,网上搜下就找得到,按照情况配置类型即可。
然后配置过滤级别、文件地址、文件名、是否写入到一个文件中、文件大小、文件数。
然后是日志格式,可以像这样自己定义一个格式:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
</layout>
别急!!!还有一个数据库日志:
<appender name="SqlAppender" type="log4net.Appender.AdoNetAppender"> <filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="FATAL"/>
</filter> <!--缓冲区大小,值为100表示输出日志达到100条时才一次写入数据库,1表示不缓存-->
<bufferSize value="" />
<!--连接组件类型-->
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<!--连接字符串-->
<connectionstring value="server=.\sql2005;database=Log;uid=sa;pwd=123" />
<!--SQL语句-->
<commandText value="INSERT INTO SysLogs
([Date],[Thread],[Level],[Logger],[Message],[Exception])
VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
注意type是AdoNetAppender,然后下面配置过滤级别缓冲区、链接组件类型、数据库的连接字符串、SQL语句;
SQL语句下面都parameter节点是获取日志中的信息给到SQL。
整理下log4net日志的更多相关文章
- 关于log4net日志的配置流程
最近又重新整理一下log4net日志的配置,现在记录一下流程和一些遇到的问题,以备后续使用,具体的配置参数等信息.此文无,见谅! 1. 下载log4net.dll文件(网上很多,随便找一个!) 2. ...
- log4net日志分割,按大小分割
最近写了一个socket通信的手表在线服务端,在日志方面,记录下Log4net日志分割 1.引入log4net.dll 2.web.config添加configsection handler 映射: ...
- .Net Core IIS下无Log4Net日志输出,命令行下却有(dotnet运行)
.Net Core IIS下无Log4Net日志输出,命令行下却有(dotnet运行) 遇到个诡异的问题,项目发布并寄宿到 IIS上后,Log4Net没有日志输出 1.原因分析 这不应该啊,所有的配置 ...
- [.Net MVC] 使用 log4net 日志框架
项目:后台管理平台 意义:项目开发中提出增加日志功能,对关键的操作.程序运行中的错误信息进行记录,这对程序部署后的调试有很大意义. 注:本文只是对网上搜集的信息进行了整合,以备今后查询. 关键字:.N ...
- 如何让Log4net日志文件按每月归成一个文件夹,StaticLogFileName参数的用法
想要让Log4net日志(以下称日志)按每月自动归类为一个文件夹,为此,学习和修改了log4net.config文件.查了资料,重点是以下这些参数: <param name=" ...
- Log4net 日志使用介绍
概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以及在运行时控制信息的格式化和信 ...
- LOG4NET日志配置及使用
Log4net的安装 Install-Package log4net 1.先弄个日志记录的类 /// <summary> /// 使用LOG4NET记录日志的功能,在WEB.CONFIG里 ...
- C#中使用Log4net日志输出到本地文件、Textbox或Listview
网上很多配置log4net的方法,但是排行靠前的 根本就没有说明清除,导致浪费了两个小时来搞清楚如何配置,真是无语,特写此文,给那些刚接触log4net的朋友 1.参考链接:http://blog.s ...
- log4net日志功能使用
早就想了解下log4net这个组件的使用,直至今日才有时间学习了一下,现在把学习的新的总结如下: (1).在项目中添加log4net.dll引用.说明:该版本是1.2.10.0 ,log4ne ...
随机推荐
- 七、Docker启动tocmat 8
七.Docker启动tocmat 8 tomcat官方镜像中tomcat:7 和tomcat:8的目录. CATALINA_BASE: /usr/local/tomcat CATALINA_HOME: ...
- Linux shell sed命令使用
Linux处理文本文件的工具: grep 过滤文件内容 sed 编辑文件内容 awk 正则表达式Regex ...
- 京东js加密 nloginpwd 破解
京东登录,有一个参数nloginpwd,是加密字段. 第一步:浏览器抓包 第二部:搜索加密字段 js 代码 第三部: 下断点 2. js代码: var navigator = {}; var wind ...
- Spring中@Autowired、@Resource和@Inject注解的使用和区别
在使用Spring进行项目开发的时候,会大量使用到自动装配,那自动装配是什么呢?简单来说:Spring 利用依赖注入(DI)功能,完成SpringIOC容器中各个组件之间的依赖关系赋值管理. 下面介绍 ...
- python基础语法19 面向对象总结,pickle保存对象注意事项
面向对象的三大特性: 继承,封装,多态 多态的三种表现形式:鸭子类型,继承父类,继承抽象类 pickle保存对象注意事项 class Foo: y = 20 def __new__(cls, *arg ...
- Win10下默认显示文件的扩展名
默认不显示文件的后缀名 1.右击此电脑,点击属性 2.点击控制面板主页 3.点击文件资源管理器选项 4.切换到查看选项卡,取消勾选“隐藏已知文件类型的扩展名”,应用->确定 结果:
- USACO Superprime Rib
洛谷 P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 洛谷传送门 JDOJ 1673: Superprime Rib JDOJ传送门 题目描述 农民约翰的母牛总是产生最好 ...
- go实现tcp 服务器
我们将使用 TCP 协议和协程范式编写一个简单的客户端-服务器应用,一个(web)服务器应用需要响应众多客户端的并发请求:Go 会为每一个客户端产生一个协程用来处理请求.我们需要使用 net 包中网络 ...
- Babel7 转码
ES6 (ES2015)更新了很多新的js语法, 也添加了一些新的API, 但不是所有的浏览器对这些新特性都支持的很好, 通过babel可以高版本的js转成低版本的js (ES 5.1), 同时对于J ...
- Layui 关闭当前标签页
parent.layui.admin.events.closeThisTabs();