• Log4Net .NET log处理


    1.NuGet 安装Log4Net.

    2.新建一个Common的project,并且添加一个LogWriter的类:

    public class LogWriter
        {
            //Error log
            public static void Error(Exception ex)
            {
                LogHelper.GetInstanse().Logger.Error(string.Format("{0} - {1}", ex.Message, ex.StackTrace));
            }
            public static void Error(string message, Exception ex)
            {
                LogHelper.GetInstanse().Logger.Error(message, ex);
            }
            //Info Log
            public static void Info(string message)
            {
                LogHelper.GetInstanse().Logger.Info(message);
            }
            public static void Info(string format, params object[] args)
            {
                LogHelper.GetInstanse().Logger.InfoFormat(format, args);
            }
            //Debug log
            public static void Debug(string message)
            {
                LogHelper.GetInstanse().Logger.Debug(message);
            }
    
            public static void Debug(string format, params object[] args)
            {
                LogHelper.GetInstanse().Logger.DebugFormat(format, args);
            }
    
        }
        class LogHelper
        {
            private static LogHelper _logHelper = null;
            private static ILog _logger = null;
            private static readonly object syncRoot = new object();
            public LogHelper()
            {
                var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"App_ConfigLog4Net.config");
                log4net.Config.XmlConfigurator.Configure(logCfg);
                _logger = LogManager.GetLogger(ConfigurationManager.AppSettings["LoggerName"]);
            }
            public static LogHelper GetInstanse()
            {
                if (_logHelper == null)
                {
                    lock (syncRoot)
                    {
                        if (_logHelper == null)
                        {
                            _logHelper = new LogHelper();
                        }
                    }
                }
                return _logHelper;
            }
            public ILog Logger
            {
                get
                {
                    return _logger;
                }
            }
        }

    3.在需要使用LogWriter的project中新建App_Config文件夹,加入配置文件:

    Log4Net.config

    <?xml version="1.0" encoding="utf-8" ?>
    <log4net>
      <root>
        <!--
                <level value="ALL" />
                <appender-ref ref="rootFile" />
                -->
      </root>
      <logger name="TestLog">
        <level value="ALL" />
        <appender-ref ref="DebugLoging"/>
        <appender-ref ref="InfoLoging" />
        <appender-ref ref="ErrorLoging" />
      </logger>
      <appender name="DebugLoging" type="log4net.Appender.RollingFileAppender,log4net" >
        <param name="File" value="_LogDatalog_debug" />
        <param name="RollingStyle" value="Date" />
        <param name="DatePattern" value="yyyyMMdd&quot;.log&quot;" />
        <param name="AppendToFile" value="true" />
        <layout type="log4net.Layout.PatternLayout,log4net">
          <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss}%newline%message%n" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <param name="LevelMin" value="DEBUG" />
          <param name="LevelMax" value="DEBUG" />
        </filter>
      </appender>
      <appender name="InfoLoging" type="log4net.Appender.RollingFileAppender,log4net" >
        <param name="File" value="_LogDatalog_Info" />
        <param name="RollingStyle" value="Date" />
        <param name="DatePattern" value="yyyyMMdd&quot;.log&quot;" />
        <param name="AppendToFile" value="true" />
        <layout type="log4net.Layout.PatternLayout,log4net">
          <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss}%newline%message%n" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <param name="LevelMin" value="INFO" />
          <param name="LevelMax" value="INFO" />
        </filter>
      </appender>
      <appender name="ErrorLoging" type="log4net.Appender.RollingFileAppender,log4net" >
        <param name="File" value="_LogDatalog_error" />
        <param name="RollingStyle" value="Date" />
        <param name="DatePattern" value="yyyyMMdd&quot;.log&quot;" />
        <param name="AppendToFile" value="true" />
        <layout type="log4net.Layout.PatternLayout,log4net">
          <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss}%newline%message%n" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <param name="LevelMin" value="ERROR" />
          <param name="LevelMax" value="ERROR" />
        </filter>
      </appender>
      <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
        <bufferSize value="10" />
        <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <connectionString value="" />
        <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
        <parameter>
          <parameterName value="@log_date" />
          <dbType value="DateTime" />
          <layout type="log4net.Layout.RawTimeStampLayout" />
        </parameter>
        <parameter>
          <parameterName value="@thread" />
          <dbType value="String" />
          <size value="100" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%t" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@log_level" />
          <dbType value="String" />
          <size value="200" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%p" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@logger" />
          <dbType value="String" />
          <size value="500" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%logger" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@message" />
          <dbType value="String" />
          <size value="3000" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%m" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@exception" />
          <dbType value="String" />
          <size value="4000" />
          <layout type="log4net.Layout.ExceptionLayout" />
        </parameter>
      </appender>
    </log4net>

    配置文件可以配置log 类型,info, error debug。

    保存路径,保存方式(文件和数据库,若是数据库要填写connectstring)

    4.在web.config/app.config中配置log的名称,这里是TestLog,和上面的log 配置文件保持一致。

    <add key="LoggerName" value="TestLog" />

    5.使用:

    LogWriter.Error("Error occurs", e);e 是exception 对象;

    LogWriter.Info("Test log feature.");  

    6.在路径_LogData下就会按照每天产生对应的log

  • 相关阅读:
    SpringBoot启动类踩坑
    数组作业
    多态的使用
    intellij idea怎么设置软件启动时选择项目进入
    方法的递归调用
    取一个数字数字后4位的和
    day09作业
    java 随机数
    java 方法
    java 循环作业
  • 原文地址:https://www.cnblogs.com/shy-huang/p/7340119.html
Copyright © 2020-2023  润新知