log4net是非常强大的日志管理系统,在客户端桌面开发中,大多数情况下我们都是把日志输出到本地文件。为了让大家能够快速开发,特此记录。 配置文件内容


  <log4net>
    <root>
      <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF
      比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录
      如果没有定义LEVEL的值,则缺省为DEBUG-->
      <level value="DEBUG"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Log\\log.txt"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <datePattern value="(yyyyMMdd)"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <RollingStyle value="Size"/>
      <MaxSizeRollBackups value="10"/>
      <maximumFileSize value="2MB"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%t]%-5p %c - %m%n"/>
      </layout>
    </appender>
  </log4net>

在AssemblyInfo中添加如下代码,表示log4net从配置文件中读取

//log4net从配置文件中读取配置
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

通过配置以上节点到app.config中还不够,只要程序在运行过程中,需要用到配置管理器,那么很有可能会遇到“配置文件尚未初始化”的错误提示。这是因为在App.Config中,需要将log4net的节点注册进去,以让配置管理器识别。

在app.config中添加如下节点代码:


<!--configSections是在配置文件的最上方,定义节点必须要在第一行上面定义-->
 <configSections>
    <!-- log4net的定义 -->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

有了以上的配置,我们就可以在代码里面开始初始化日志管理器了。

    public class LogService
    {
        static LogService()
        {
            Instance = LogManager.GetLogger("需要记录的日志节点名称,可任意填写。填写的名称会记录在日志里面,可以表示是什么程序记录的日志");
        }

        public static ILog Instance { get; private set; }
    }

注意:客户端软件在app.config中配置,web程序在web.config中配置。 祝君玩耍愉快!


本文会经常更新,请阅读原文: https://huchengv5.gitee.io//post/C-log4net%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名胡承(包含链接: https://huchengv5.gitee.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系