Log4Net使用示例

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <!--日志配置部分-->
    <log4net>
        <root>
            <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
            <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
            <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
            <!--<level value="ALL"/-->
            <!--向日志文件输出日志信息-->
            <appender-ref ref="RollingFileAppender"/>
            <!--appender-ref ref="ConsoleAppender"/-->
            <!--向控制台输出日志信息-->
        </root>
        <!--创建log名称可以在后续代码中使用-->
        <logger name="appError">
            <level value="ALL" />
            <appender-ref ref="appErrorLog" />
        </logger>
        <logger name="Operation">
            <level value="ALL"/>
            <appender-ref ref="OperationLog" />
        </logger>
        <appender name="OperationLog" type="log4net.Appender.RollingFileAppender">
            <!--日志文件名开头-->
            <file value="Log/程序日志/"/>
            <!--多线程时采用最小锁定-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
            <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
            <DatePattern value="yyyy-MM-dd&quot;Linkto.log&quot;"/>
            <!--是否追加到文件,默认为true,通常无需设置-->
            <AppendToFile value="true"/>
            <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
            <!--变换的形式为日期,这种情况下每天只有一个日志-->
            <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义-->
            <RollingStyle value="Date"/>
            <!--变换的形式为日志大小-->
            <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义-->
            <!--<RollingStyle value="Size"/>-->
            <!--每天记录的日志文件个数,与maximumFileSize配合使用-->
            <!--<MaxSizeRollBackups value="10"/>-->
            <!--每个日志文件的最大大小-->
            <!--可用的单位:KB|MB|GB-->
            <!--不要使用小数,否则会一直写入当前日志-->
            <maximumFileSize value="100MB"/>
            <StaticLogFileName value="false"/>
            <!--日志格式-->
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date[%t]%p: %m%n"/>
            </layout>
        </appender>
        <appender name="appErrorLog" type="log4net.Appender.RollingFileAppender">
            <!--日志文件名开头-->
            <file value="Log/错误日志/"/>
            <!--多线程时采用最小锁定-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
            <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
            <DatePattern value="yyyy-MM-dd&quot;LinktoError.log&quot;"/>
            <!--是否追加到文件,默认为true,通常无需设置-->
            <AppendToFile value="true"/>
            <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
            <!--变换的形式为日期,这种情况下每天只有一个日志-->
            <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义-->
            <RollingStyle value="Date"/>
            <!--变换的形式为日志大小-->
            <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义-->
            <!--<RollingStyle value="Size"/>-->
            <!--每天记录的日志文件个数,与maximumFileSize配合使用-->
            <!--<MaxSizeRollBackups value="10"/>-->
            <!--每个日志文件的最大大小-->
            <!--可用的单位:KB|MB|GB-->
            <!--不要使用小数,否则会一直写入当前日志-->
            <maximumFileSize value="100MB"/>
            <StaticLogFileName value="false"/>
            <!--日志格式-->
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date[%t]%p: %m%n"/>
            </layout>
            <!--指定过滤器-->
            <!--<filter type="log4net.Filter.LevelRangeFilter">
                <levelMin value="ERROR" />
                <levelMax value="FATAL" />
            </filter>-->
        </appender>
    </log4net>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
    </startup>
</configuration>

1.配置log4Net的文件写入

2.在Assmblyinfo.cs中使用改配置信息

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("WindowsFormsLog4Net")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WindowsFormsLog4Net")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

//指定配置文件类型
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)] //配置log4net

//指定配置文件
//[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("eb1a4b05-7a43-4f6a-81ec-3020b052a34d")]

// 程序集的版本信息由下列四个值组成: 
//
//      主版本
//      次版本
//      生成号
//      修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

3.代码中使用

namespace WindowsFormsLog4Net
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ILog m_log = LogManager.GetLogger("Operation");
            m_log.Debug("这是一个Debug日志" + 2);


            ILog m_log2 = LogManager.GetLogger("appError");
            m_log2.Debug("这是一个Debug日志" + 2);
            m_log2.Info("这是一个Info日志");


        }
    }

4.输出结果

 

 

 

 

posted @ 2023-06-26 16:11  BangZeng  阅读(27)  评论(0编辑  收藏  举报