其他分享
首页 > 其他分享> > log4net配置使用

log4net配置使用

作者:互联网

到nuget里下载log4net

 这里为帮组类 可以改为静态方法 

        private static ILog logger;
        static LogImp()//这个是构造函数
        {
            if (logger == null)
            {
                var repository = LogManager.CreateRepository("WebApplication1");///这里改为项目名称
                //指定配置文件
                XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
                lock (locker)
                {
                    if (logger == null)
                    {
                        lock (locker)
                            logger = LogManager.GetLogger(repository.Name, "RollingLogFileAppender");
                    }
                }

            }
        }
  /// <summary>
        /// 调试信息
        /// </summary>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        public void Debug(string message, Exception exception = null)
        {

            if (exception == null)
                logger.Debug(message);
            else
                logger.Debug(FormartLog(message, exception));

        }
        /// <summary>
        /// 一般信息
        /// </summary>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        public void Info(string message, Exception exception = null)
        {

            if (exception == null)
                logger.Info(message);
            else
                logger.Info(FormartLog(message, exception));
        }

        /// <summary>
        /// 警告
        /// </summary>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        public void Warn(string message, Exception exception = null)
        {

            if (exception == null)
                logger.Warn(message);
            else
                logger.Warn(FormartLog(message, exception));

        }

        /// <summary>
        /// 一般错误
        /// </summary>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        public void Error(string message, Exception exception = null)
        {

            if (exception == null)
                logger.Error(message);
            else
                logger.Error(FormartLog(message, exception));
        }


        /// <summary>
        /// 致命错误
        /// </summary>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        public void Fatal(string message, Exception exception = null)
        {

            if (exception == null)
                logger.Fatal(message);
            else
                logger.Fatal(FormartLog(message, exception));

        }


        /// <summary>
        /// 自定义返回格式
        /// </summary>
        /// <param name="throwMsg"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        private static string FormartLog(string throwMsg, Exception ex)
        {
            return string.Format("【错误地点】:{0} \r\n【异常类型】:{1} \r\n【异常信息】:{2} \r\n【堆栈调用】:{3}", new object[] { throwMsg, ex.GetType().Name, ex.Message, ex.StackTrace });
        }

然后打开项目在webapi下面安装Microsoft.Extensions.Logging.Log4Net.AspNetCore

 

 

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>

    <log4net>
        <!-- Debug 将日志以回滚文件的形式写到文件中 -->
        <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender">
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="Log\\Debug\" />
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <param name="MaxFileSize" value="10240"/>
            <param name="MaxSizeRollBackups" value="100"/>
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd_HH'.log'" />
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Debug" />
                <param name="LevelMax" value="Debug" />
            </filter>
        </appender>

        <!-- Info 将日志以回滚文件的形式写到文件中 -->
        <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender">
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="Log\\Info\\" />
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <param name="MaxFileSize" value="10240"/>
            <param name="MaxSizeRollBackups" value="100"/>
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd_HH'.log'" />
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Info" />
                <param name="LevelMax" value="Info" />
            </filter>
        </appender>

        <!-- Warn 将日志以回滚文件的形式写到文件中 -->
        <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender">
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="Log\\Warn\\" />
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <param name="MaxFileSize" value="10240"/>
            <param name="MaxSizeRollBackups" value="100"/>
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd_HH'.log'" />
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Warn" />
                <param name="LevelMax" value="Warn" />
            </filter>
        </appender>

        <!-- Error 将日志以回滚文件的形式写到文件中 -->
        <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender">
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="Log\\Error\\" />
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <param name="MaxFileSize" value="10240"/>
            <param name="MaxSizeRollBackups" value="100"/>
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd_HH'.log'" />
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Error" />
                <param name="LevelMax" value="Error" />
            </filter>
        </appender>

        <!-- Fatal 将日志以回滚文件的形式写到文件中 -->
        <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender">
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="Log\\Fatal\\" />
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <param name="MaxFileSize" value="10240"/>
            <param name="MaxSizeRollBackups" value="100"/>
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd_HH'.log'" />
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Fatal" />
                <param name="LevelMax" value="Fatal" />
            </filter>
        </appender>

        <logger name="RollingLogFileAppender">
            <level value="ALL" />
            <appender-ref ref="RollingFileDebug" />
            <appender-ref ref="RollingFileInfo" />
            <appender-ref ref="RollingFileWarn" />
            <appender-ref ref="RollingFileError" />
            <appender-ref ref="RollingFileFatal" />
        </logger>

        <!--<root>
    控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF
    比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录
     如果没有定义LEVEL的值,则缺省为DEBUG
      <level value="ALL" />
       按日期切分日志文件,并将日期作为日志文件的名字
      <appender-ref ref="RollingFileAppenderNameByDate" />
    </root>-->
    </log4net>
</configuration>

这个分类分等级了

 

 改为始终复制 运行项目进行日志使用 就会发现在项目文件夹下\bin\Debug\net6.0发现log文件夹 

 

标签:log4net,exception,FormartLog,string,配置,使用,logger,null,message
来源: https://www.cnblogs.com/bay-max-/p/16307875.html