- A+
所属分类:.NET技术
到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} rn【异常类型】:{1} rn【异常信息】:{2} rn【堆栈调用】:{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>
这个分类分等级了
改为始终复制 运行项目进行日志使用 就会发现在项目文件夹下binDebugnet6.0发现log文件夹