分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

log4net使用注意事项

发布时间:2023-09-06 01:29责任编辑:白小东关键词:暂无标签

1配置Log4net

Log4net的配置文件有几种使用方式,这里将配置log4net的部分独立出来,即关于log4net的配置独立成文件log4net.config。

1)写入Mysql

log4net.config文件配置

<configuration> ?<startup> ???<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> ?</startup> ?<configSections> ???<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> ?</configSections> ?<log4net> ???<logger name="ErrorLog"> ?????<level value="Error"/> ?????<appender-ref ref="ErrorAppender"/> ???</logger> ???<logger name="OperationLog"> ?????<level value="Info"/> ?????<appender-ref ref="OperationAppender"/> ???</logger> ???????<appender name="ErrorAppender" type="log4net.Appender.ADONetAppender"> ???????????<bufferSize value="1"/> ???????????<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" /> ?????<connectionString value="Database=log;Data Source=192.168.107.13;User Id=root;Password=cnki2017;CharSet=utf8;port=3306"/> ???????????<commandText value="INSERT INTO errorlogs (`InsertTime`,`Level`,`Message`,`ExceptionMessage`) VALUES (@log_date, @log_level, @message, @exception)"/> ?????<parameter> ???????<parameterName value="@log_date"/> ???????<dbType value="DateTime"/> ???????<layout type="log4net.Layout.RawTimeStampLayout"/> ?????</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="@exception"/> ???????<dbType value="String"/> ???????<size value="4000"/> ???????<layout type="log4net.Layout.ExceptionLayout"/> ?????</parameter> ?????<parameter> ???????<parameterName value="@message"/> ???????<dbType value="String"/> ???????<size value="2000"/> ???????<layout type="log4net.Layout.PatternLayout"> ?????????<conversionPattern value="%message"/> ???????</layout> ?????</parameter></appender> ?</log4net></configuration>

在控制台程序中使用:

class Program{ ???????static void Main(string[] args) ???????{ ???????????try ???????????{ ???????????????var path = string.Format("{0}{1}", System.AppDomain.CurrentDomain.BaseDirectory, "Log4net.config"); ???????????????ICollection c = log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(path)); ???????????????ILog log = log4net.LogManager.GetLogger("ErrorLog"); ???????????????log.Error("wwwww", new Exception("测试抛出")); ???????????} ???????????catch (Exception e) ???????????{ ???????????????Console.WriteLine(e.Message); ???????????} ???????????????????}}

运行上面的代码,成功地将数据记录到数据库中。

2)写入日志文件

appender配置节说明

file

string

日志文件存放位置,可以为绝对路径也可以为相对路径

appendToFile

boolean

是否追加到已有的日志文件中

rollingStyle

Size/Date

切分日志的模式。Size:按大小切分,Date按日期切分

maxSizeRollBackups

int

当rollingStyle为Size模式时,指定备份日志文件的最大切分数量,如果超过指定值,日志将进行覆写。

maximumFileSize

int

当rollingStyle为Size模式时,指定每个切分日志文件的大小

datePattern

string

当rollingStyle为Date模式时,日志文件名称的一部分,可设置时间格式。

staticLogFileName

boolean

指定是否为静态文件名。

若指定为true,那么文件名以file 中定义的文件名为准。

若为false,当rollingStyle为Date模式时,文件名为file 和datePattern共同构成的

layout

输出日志的样式

其下的配置节conversionPattern

控制着输出的样式

lockingModel

string

最小锁定模型以允许多个进程可以写入同一个文件

encoding

string

文件编码

 示例:

<configuration> ?<startup> ???<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> ?</startup> ?<configSections> ???<section name="log4net" ?????????????????????????type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> ?</configSections><log4net><appender name="TxtLogRollingFileAppender"type="log4net.Appender.RollingFileAppender"> ?????????<file value="log\\RollingFile" /> ?????????<appendToFile value="true" /> ?????????<rollingStyle value="date" /> ?????????<datePattern value="yyyy-MM-dd&quot;.log&quot;"/> ?????????<staticLogFileName value="false"/> ?????????<encoding value="utf-8" /> ?????????<lockingModel type="log4net.Appender.FileAppender+MinimalLock" ????????????/> ?????????<layout type="log4net.Layout.PatternLayout"> ???????????<param name="conversionPattern" value="时间:%date%newline ???????????????线程:[%thread]%newline日志类型:%-5level%newline内 ???????????????????容:%message" /> ???????????<param name="header" value="&#13;&#10;------------开始 ???????????????????---------------&#13;&#10;" /> ???????????<param name="footer" value="&#13;&#10;------------- ???结束 ???????????????------------&#13;&#10;" /> ??????</layout></appender> ?</log4net></configuration>

Main函数中:

ICollection c = log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(@"E:\projgxz_myself\Log4NetTest\Log4net.config")); ???????????????ILog log = log4net.LogManager.GetLogger("TxtLogRollingFileAppender"); ???????????????log.Info("测试输出信息"); ???????????????Console.Read();

2遇到的问题

1)数据库的访问。

当访问的数据库不存在或表不存在或连接配置不正确时,并不会抛出异常。

2)不会返回配置文件信息集合。

ICollection c = log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(path));

这行代码返回值是ICollection,然而并不会获得配置文件信息,返回的集合居然是空。

3)配置文件路径不正确。

当所指定的配置文件路径不正确时也不会抛出异常,这给调试增加了难度。

4)配置日志类型与使用的方法不一致。

将上面的配置节:

<logger name="ErrorLog">

      <level value="Error"/>

      <appender-ref ref="ErrorAppender"/>

</logger>

改为下面这样,而其他代码不变,运行程序发现无法写入,但是系统不会抛出异常,也没有任何提示。

<logger name="ErrorLog">

      <level value="Info"/>

      <appender-ref ref="ErrorAppender"/>

</logger>

5)回滚文件锁定模式

如果如下这么配置,系统会抛异常,但是无法用try-catch捕获,但可在控制台查看到。

<lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />

6)写文本文件的问题

若rollingStyle配置节的值为date,那么maxSizeRollBackups、maximumFileSize对日志文件没有任何影响。

log4net使用注意事项

原文地址:http://www.cnblogs.com/hdwgxz/p/8010758.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved