.netcore项目中使用log4net
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了.netcore项目中使用log4net,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4905字,纯文字阅读大概需要8分钟。
内容图文
log4net配置文件
引入log4net包,创建一个config目录,专门用来放配置文件,添加log4net.config文件。
编写配置文件。
<? xml version="1.0" encoding="utf-8" ?> < configuration > < log4net > <!-- 错误日志类 --> < logger name ="errLog" > < level value ="ALL" /> < appender-ref ref ="ErrorAppender" /> </ logger > <!-- 错误日志附加介质 --> < appender name ="ErrorAppender" type ="log4net.Appender.RollingFileAppender" > <!-- 日志文件路径,会自动创建 --> < param name ="File" value ="Log\\LogError\\" /> <!-- 是否是向文件中追加日志 --> < param name ="AppendToFile" value ="true" /> <!-- log备份文件最大数量 --> < param name ="MaxSizeRollBackups" value ="2" /> <!-- 最大文件大小(KB/MB/GB) --> < param name ="MaxFileSize" value ="1MB" /> <!-- 日志文件名是否是固定不变的 --> < param name ="StaticLogFileName" value ="false" /> <!-- 日志文件名格式为:2019-10-09.log --> < param name ="DatePattern" value ="yyyy-MM-dd".htm"" /> <!-- 日志滚动方式:混合方式(文件大小和日期) --> < param name ="RollingStyle" value ="Composite" /> <!-- 信息日志布局 --> < layout type ="log4net.Layout.PatternLayout" > < param name ="ConversionPattern" value ="<HR COLOR=red>%n【异常时间】:%d [%t] <BR>%n【异常级别】:%-5p <BR>%n%m <BR>%n <HR Size=1>" /> </ layout > </ appender > <!-- 信息日志 --> < logger name ="infoLog" > < level value ="ALL" /> < appender-ref ref ="InfoAppender" /> </ logger > <!-- 信息日志附加介质 --> < appender name ="InfoAppender" type ="log4net.Appender.RollingFileAppender" > < param name ="File" value ="Log\\LogInfo\\" /> < param name ="AppendToFile" value ="true" /> < param name ="MaxSizeRollBackups" value ="2" /> < param name ="MaxFileSize" value ="1024KB" /> < param name ="StaticLogFileName" value ="false" /> < param name ="DatePattern" value ="yyyy-MM-dd".htm"" /> < param name ="RollingStyle" value ="Composite" /> < layout type ="log4net.Layout.PatternLayout" > < param name ="ConversionPattern" value ="<HR COLOR=blue>%n【日志时间】:%d [%t] <BR>%n【日志级别】:%-5p <BR>%n%m <BR>%n <HR Size=1>" /> </ layout > </ appender > </ log4net > <!-- To customize the asp.net core module uncomment and edit the following section. For more info see https://go.microsoft.com/fwlink/?linkid=838655 --> < system.webServer > < handlers > < remove name ="aspNetCore" /> < add name ="aspNetCore" path ="*" verb ="*" modules ="AspNetCoreModule" resourceType ="Unspecified" /> </ handlers > < aspNetCore processPath ="%LAUNCHER_PATH%" arguments ="%LAUNCHER_ARGS%" stdoutLogEnabled ="false" stdoutLogFile =".\logs\stdout" /> </ system.webServer > </ configuration >
日志帮助类
首先创建一个仓储类
public class Log4NetRepository { public static ILoggerRepository loggerRepository { get; set; } }
/// <summary> /// log4net帮助类 /// AdoNetAppender仅支持到.net framework4.5,不支持在.net core项目中持久化日志到数据库 /// </summary> public class LogHelper { // 异常 private static readonly ILog logerror = LogManager.GetLogger(Log4NetRepository.loggerRepository.Name, "logerror"); // 记录privatestaticreadonly ILog loginfo = LogManager.GetLogger(Log4NetRepository.loggerRepository.Name, "loginfo"); publicstaticvoid Error(string throwMsg, Exception ex) { string errorMsg = string.Format("【异常描述】:{0} <br>【异常类型】:{1} <br>【异常信息】:{2} <br>【堆栈调用】:{3}", newobject[] { throwMsg, ex.GetType().Name, ex.Message, ex.StackTrace }); errorMsg = errorMsg.Replace("\r\n", "<br>"); logerror.Error(errorMsg); } publicstaticvoid Info(string message) { loginfo.Info(string.Format("【日志信息】:{0}",message)); } }
startup引用log4net,log4net.Config,log4net.Repository。在startup的构造函数中这么配置:
public static ILoggerRepository repository { get; set; } public Startup(IConfiguration configuration) { Configuration = configuration; // log4net 仓储 repository = LogManager.CreateRepository("CoreLogRepository"); XmlConfigurator.Configure(repository, new FileInfo("config/log4net.config")); Log4NetRepository.loggerRepository = repository; }
之前写好了全局异常捕获,现在可以加上这么一句。
public class ApiExceptionFilter:ExceptionFilterAttribute { private IHostingEnvironment _env; public ApiExceptionFilter(IHostingEnvironment env) { _env = env; } publicoverridevoid OnException(ExceptionContext context) { if (context.ExceptionHandled) { return; } LogHelper.Error(exMsg, context.Exception); // 日志记录var exMsg = context.Exception.Message; ApiResp resp = new ApiResp(ApiRespCode.E999999,exMsg); // 开发环境显示异常信息if(_env.IsDevelopment()) { resp.Message = exMsg; } context.Result = new JsonResult(resp); context.ExceptionHandled = true; } }
当发生异常时,会自动在项目目录创建Log\LogError\目录,并写入日志文件。
原文:https://www.cnblogs.com/fallTakeMan/p/11688397.html
内容总结
以上是互联网集市为您收集整理的.netcore项目中使用log4net全部内容,希望文章能够帮你解决.netcore项目中使用log4net所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。