• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
混子程序员
博客园    首页    新随笔    联系   管理    订阅  订阅
winform下log4net使用

1、在根目录创建log4net.config后,把下面代码复制进去

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- Level的级别,由高到低 -->
<!-- None > Fatal > ERROR > WARN > DEBUG > INFO > ALL-->
<!-- 解释:如果level是ERROR,则在cs文件里面调用log4net的info()方法,则不会写入到日志文件中-->
<log4net>
<!--错误日志类-->
<logger name="logerror">
<!--日志类的名字-->
<level value="ALL" />
<!--定义记录的日志级别-->
<appender-ref ref="ErrorAppender" />
<!--记录到哪个介质中去-->
</logger>
<!--错误日志附加介质-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
<param name="File" value="Log\\" />
<!--日志输出到exe程序这个相对目录下-->
<param name="AppendToFile" value="true" />
<!--输出的日志不会覆盖以前的信息-->
<param name="MaxSizeRollBackups" value="100" />
<!--备份文件的个数-->
<param name="MaxFileSize" value="10240" />
<!--当个日志文件的最大大小-->
<param name="StaticLogFileName" value="false" />
<!--是否使用静态文件名-->
<param name="DatePattern" value="yyyy\\yyyyMM\\yyyyMMdd'.txt'" />
<!--日志文件名-->
<param name="RollingStyle" value="Date" />
<!--文件创建的方式,这里是以Date方式创建-->
<!--错误日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="====================%n异常时间:%d %n异常级别:%-5p%n异常信息:%m%n====================%n" />
</layout>
</appender>
</log4net>
</configuration>

2、如果多种类型要分文件夹存放那么重新在上一个appender结尾再添加一个appender,再上一个logger结尾再加一个logger即可

<!--信息日志类-->
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>

<!--信息日志附加介质--> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\" /> <param name="AppendToFile" value="true" /> <param name="MaxFileSize" value="10240" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy\\yyyyMM\\yyyyMMdd'.txt'" /> <param name="RollingStyle" value="Date" /> <!--信息日志布局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="====================%n异常时间:%d %n异常级别:%-5p%n异常信息:%m%n====================%n" />
</layout>
</appender>

3、log4net.config文件属性中,设置复制到输出目录为如果较新则复制

4、在AssemblyInfo.cs文件中加入这条语句

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

5、创建实际操作的LogHelper类,其中代码如下:(其中的logerror对应logger中的name值,)

public static ILog log = log4net.LogManager.GetLogger("logerror");
        public static void Error(string msg)
        {
            log.Error(msg);
        }

6、调用即可,LogHelper.Error("出现错误啦");

 

 

7、补充:

MaxFileSize 最大的文件大小。我们可以使用"KB", "MB" 或 "GB"为 MaxFileSize 作为后缀限定大小。默认的文件大小是10MB。

RollingStyle是文件创建的方式。上例中市设置为以Date方式创建新文件。

DatePattern 日期格式,当我们设置了RollingStyle 为Date方式后,Log4Net会自动使用DatePattern 中的日期格式来创建新的日志文件。

MaxSizeRollBackups这个属性用来设置,当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定。比如说,我们是以日期格式作为日志文件名的,假设今天是2013-10-28,那么今天创建的日志文件名就是20131028.htm,当这个文件中要超过MaxFileSize的时候,Log4Net就自动将老的20131028.htm改名为20131028.htm.1,并创建一个新的20131028.htm文件。

StaticLogFileName的值如果为true,则当前日志文件(相对于历史日志文件而言)的文件名只取File参数。如果为false,则文件名取File+DatePattern。

 

8、补充:

%m、%message         输出的日志消息
    %d、%datetime        输出当前语句运行的时刻,格式%date{yyyy-MM-dd HH:mm:ss,fff}
    %r、%timestamp       输出程序从运行到执行到当前语句时消耗的毫秒数
    %p、%level           日志的当前优先级别
    %c、%logger          当前日志对象的名称
    %L、%line            输出语句所在的行号
    %F、%file            输出语句所在的文件名,警告:只在调试的时候有效,调用本地信息会影响性能
    %a、%appdomain       引发日志事件的应用程序域的名称。
    %C、%class、%type    引发日志请求的类的全名,警告:会影响性能
    %exception           异常信息
    %u、%identity        当前活动用户的名字,我测试的时候%identity返回都是空的。警告:会影响性能
    %l、%location        引发日志事件的名空间、类名、方法、行号。警告:会影响性能,依赖pdb文件
    %M、%method          发生日志请求的方法名,警告:会影响性能
    %n、%newline         换行符
    %x、%ndc             NDC(nested diagnostic context)
    %X、%mdc、%P、%properties  等介于 %property
    %property           输出{log4net:Identity=, log4net:UserName=, log4net:HostName=} 
    %t、%thread         引发日志事件的线程,如果没有线程名就使用线程号。
    %w、%username       当前用户的WindowsIdentity,类似:HostName/Username。警告:会影响性能
    %utcdate            发生日志事件的UTC时间。例如:%utcdate{HH:mm:ss,fff}
    %%                  输出一个百分号

 

posted on 2021-05-12 16:25  混子程序员ZMY  阅读(389)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3