C# log4net 配置

安装log4net

项目 - 管理Nuget程序包,在浏览框中输入 log4net - 回车 - 选择 log4net - 安装。

添加log4net.config

在工程目录下添加log4net.config文件, 设置log4net.config的文件属性,自动把log4net.config的内容复制到.exe文件所在的目录

log4net.config源码


修改AssemblyInfo.cs

在工程 - Properties - AssemblyInfo.cs文件中新增如下一行代码:

 

使用


 

<?xml version="1.0" encoding="utf-8" ?>
<!--
       log4.net 官网,https://logging.apache.org/log4net/    看官方文档
       C# 写法
       ////////////////这个配置记录所有日志
       <root>
            <level value="ALL" />
            <appender-ref ref="SysAppender" />
       </root>
       ////////////////
        public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("mLog");
        public static readonly log4net.ILog defined = log4net.LogManager.GetLogger("defined");
        
            logInfo.Info("11");
            logInfo.Error("22");
            logInfo.Debug("33");

            defined.Info("44");
            defined.Error("55");
            defined.Debug("66");
--> 
<configuration>
    <configSections>
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
    </configSections>
    <!--log4net配置文件-->
    <!-- 。。。。。。。。。。。控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF。。。。。。。。。。。 -->
    <log4net>
        <!-- <root>实际上就是一个根logger,所有其它logger都默认继承它,如果配置文件里没有显式定义,则框架使用根日志中定义的属性-->
        <root>
            <level value="ALL" />
            <appender-ref ref="SysAppender" /><!--记录到哪个介质中去-->
        </root>

        <!--log-->
        <logger name="mLog">
            <level value="ALL"/>
            <appender-ref ref="InfoAppender"/>
            <appender-ref ref="ErrorAppender"/>
            <appender-ref ref="ConsoleAppender"/>
        </logger>

        <!--自定义的log-->
        <logger name="defined">
            <level value="ALL" />
            <appender-ref ref="defined"/>
        </logger>

        <!--根记录log-->
        <appender name="SysAppender" type="log4net.Appender.RollingFileAppender">
            <!--日志路径-->
            <File value="log/log_SysAppender.txt"/>
            <!--是否是向文件中追加日志-->
            <AppendToFile value="true"/>
            <!--创建新文件的方式-->
            <RollingStyle value="Size"/>
            <!--log文件大小-->
            <MaximumFileSize value="5M"/>
            <!--备份日志数目-->
            <MaxSizeRollBackups value="30"/>
            <!--日志文件名是否是固定不变的-->
            <StaticLogFileName value="true"/>
            <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
            <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
            <!--输出格式-->
            <layout type="log4net.Layout.PatternLayout">
                <!--日期 [级别]-->
                <conversionPattern value="%d [%-5p] [%t%] -%m%n"/>
            </layout>
            <!--控制器,只记录级别在INFO-INFO之间的信息-->
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="ALL" />
                <param name="LevelMax" value="OFF" />
            </filter>
        </appender>
        
        <!--运行状态信息-->
        <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
            <!--日志路径-->
            <File value="log/log_info.txt"/>
            <!--是否是向文件中追加日志-->
            <AppendToFile value="true"/>
            <!--创建新文件的方式-->
            <RollingStyle value="Size"/>
            <!--log文件大小-->
            <MaximumFileSize value="5M"/>
            <!--备份日志数目-->
            <MaxSizeRollBackups value="30"/>
            <!--日志文件名是否是固定不变的-->
            <StaticLogFileName value="true"/>
            <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
            <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
            <!--输出格式-->
            <layout type="log4net.Layout.PatternLayout">
                <!--日期 [级别]-->
                <conversionPattern value="%d [%-5p] [%t%] -%m%n"/>
            </layout>
            <!--控制器,只记录级别在INFO-INFO之间的信息-->
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="INFO" />
                <param name="LevelMax" value="ERROR" />
            </filter>
        </appender>
        
        <!--运行错误信息-->
        <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
            <!--日志路径-->
            <File value="log/log_error.txt"/>
            <!--是否是向文件中追加日志-->
            <AppendToFile value="true"/>
            <!--创建新文件的方式-->
            <RollingStyle value="Size"/>
            <!--log文件大小-->
            <MaximumFileSize value="5M"/>
            <!--备份日志数目-->
            <MaxSizeRollBackups value="30"/>
            <!--日志文件名是否是固定不变的-->
            <StaticLogFileName value="true"/>
            <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
            <!--输出格式-->
            <layout type="log4net.Layout.PatternLayout">
                <!--输出格式-->
                <conversionPattern value="%d [%-5p] [%t%] -%m%n"/>
            </layout>
            <!--控制器,只记录级别在WARN-FATAL之间的信息-->
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="WARN" />
                <param name="LevelMax" value="ERROR" />
            </filter>
        </appender>

        <!--控制台-->
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%d %-5p %c - %m%n"/>
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="INFO" />
                <param name="LevelMax" value="ERROR" />
            </filter>
        </appender>

        <!--自定义信息-->
        <appender name="defined" type="log4net.Appender.RollingFileAppender">
            <!--日志路径-->
            <File value="log/log_defined.txt"/>
            <!--是否是向文件中追加日志-->
            <AppendToFile value="true"/>
            <!--创建新文件的方式-->
            <RollingStyle value="Size"/>
            <!--log文件大小-->
            <MaximumFileSize value="5M"/>
            <!--备份日志数目-->
            <MaxSizeRollBackups value="30"/>
            <!--日志文件名是否是固定不变的-->
            <StaticLogFileName value="true"/>
            <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
            <!--输出格式-->
            <layout type="log4net.Layout.PatternLayout">
                <!--输出格式-->
                <conversionPattern value="%d [%-5p] [%t%] -%m%n"/>
            </layout>
            <!--控制器,只记录级别在WARN-FATAL之间的信息-->
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="INFO" />
                <param name="LevelMax" value="ERROR" />
            </filter>
        </appender>

    </log4net>
</configuration>

 

posted @ 2021-11-08 17:09  浅绿色i  阅读(1060)  评论(0编辑  收藏  举报