log4j使用

发布时间 2024-01-08 12:05:09作者: ywwwik

创建项目—>利用NuGet安装log4net

 打开App.config,没有就创建一个

 修改配置(App.config)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <log4net>
    <!-- 定义输出到文件中 -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-->
      <!--<file value="log\\"/>-->
      <!--日志名称-->
      <file value="log"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>

      <!--日志最大可备份数-->
      <maxSizeRollBackups value="10"/>
      <!--日志文件大小-->
      <maximumFileSize value="1024KB"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--每条日志末尾的文字说明-->
        <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="%newline 记录时间:%date %n日志级别:%-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="ERROR"/>
      <!--文件形式记录日志-->
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>
</configuration>

新建一个LogisTrac日志类,以实现公共调用,具体代码如下:

using System;

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace demo1
{
    public class LogisTrac
    {
        /// <summary>
        /// 输出日志到Log4Net
        /// </summary>
        /// <param name="t"></param>
        /// <param name="ex"></param>
        #region static void WriteLog(Type t, Exception ex)

        public static void WriteLog(Type t, Exception ex)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(t);
            log.Error("Error", ex);
        }

        #endregion

        /// <summary>
        /// 输出日志到Log4Net
        /// </summary>
        /// <param name="t"></param>
        /// <param name="msg"></param>
        #region static void WriteLog(Type t, string msg)

        public static void WriteLog(Type t, string msg)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(t);
            log.Error(msg);
        }

        #endregion
    }
}

测试代码:

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                throw new Exception();
            }
            catch (Exception ex)
            {
                LogisTrac.WriteLog(typeof(Form1), ex);
            }
        }

效果: