AspNetCore配置多环境log4net配置文件
2022-04-19 09:57
1526 查看
前言
在之前的文章中有讲到AspNetCore多环境配置文件的应用,我们根据自己多种环境分别配置多个
appsettings.$EnvironmentName.json文件。 在实际的开发中我们可能会遇到不只一个配置文件,如当我们使用log4net日志库时,喜欢使用单独的
log4net.config配置文件。并且我们还遇到不同环境下的配置文件还存在差异。这时我们可能可以效仿
appsettings.json多环境配置的风格实现多环境配置文件。
配置log4net
新建Web项目
安装
Microsoft.Extensions.Logging.Log4Net.AspNetCore
创建两个环境的配置文件分别如图,并设置文件属性使其在发布时能够复制到根目录
两个配置文件内容如下,例如我们这里生产环境的配置文件多增加一个
KafkaAppender使日志发送至
kafka消息丢列中,然后
kafka的消费者将日志消费至
ES集群,而本地开发的日志则没必要进行上传ES。
<!--log4net.config--> <?xml version="1.0" encoding="utf-8" ?> <log4net> <!-- If you are looking here and want more output, first thing to do is change root/priority/@value to "INFO" or "ALL". --> <root> Value of priority may be ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF. <priority value="ALL" /> <appender-ref ref="error-file" /> <appender-ref ref="debug-file" /> <appender-ref ref="KafkaAppender" /> </root> <!-- Example of turning on the output from a component or namespace. --> <logger name="Common"> <appender-ref ref="debugger"/> <priority value="DEBUG" /> </logger> <appender name="KafkaAppender" type="log4net.Kafka.Appender.KafkaAppender, log4net.Kafka.Appender"> <KafkaSettings> <brokers> <add value="127.0.0.1:9092" /> </brokers> <topic type="log4net.Layout.PatternLayout"> <conversionPattern value="kafka.logstash" /> </topic> </KafkaSettings> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level% [%t] %logger - %message" /> </layout> </appender> <appender name="debugger" type="log4net.Appender.DebugAppender"> <!-- Sends log messages to Visual Studio if attached. --> <immediateFlush value="true" /> <layout type="log4net.Layout.SimpleLayout" /> </appender> <appender name="debug-file" type="log4net.Appender.RollingFileAppender"> <param name="Encoding" value="utf-8" /> <file value="Logs/debug" /> <appendToFile value="true" /> <!-- Immediate flush on error log, to avoid data loss with sudden termination. --> <immediateFlush value="true" /> <staticLogFileName value="false" /> <rollingStyle value="Date" /> <datepattern value="-yyyy.MM.dd'.log'" /> <!-- Prevents Orchard.exe from displaying locking debug messages. --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level% [%property{trace}] %logger - %message%newline" /> </layout> </appender> <appender name="error-file" type="log4net.Appender.RollingFileAppender"> <param name="Encoding" value="utf-8" /> <file value="Logs/error" /> <appendToFile value="true" /> <!-- Immediate flush on error log, to avoid data loss with sudden termination. --> <immediateFlush value="true" /> <staticLogFileName value="false" /> <rollingStyle value="Date" /> <datepattern value="-yyyy.MM.dd'.log'" /> <!-- Prevents Orchard.exe from displaying locking debug messages. --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <filter type="log4net.Filter.LevelRangeFilter"> <!-- Only ERROR and FATAL log messages end up in this target, even if child loggers accept lower priority. --> <levelMin value="ERROR" /> </filter> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%t] %logger - %message [%P{Url}]%newline" /> </layout> </appender> </log4net>
<!--log4net.Development.config--> <?xml version="1.0" encoding="utf-8" ?> <log4net> <!-- If you are looking here and want more output, first thing to do is change root/priority/@value to "INFO" or "ALL". --> <root> Value of priority may be ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF. <priority value="ALL" /> <appender-ref ref="error-file" /> <appender-ref ref="debug-file" /> </root> <!-- Example of turning on the output from a component or namespace. --> <logger name="Common"> <appender-ref ref="debugger"/> <priority value="DEBUG" /> </logger> <appender name="debugger" type="log4net.Appender.DebugAppender"> <!-- Sends log messages to Visual Studio if attached. --> <immediateFlush value="true" /> <layout type="log4net.Layout.SimpleLayout" /> </appender> <appender name="debug-file" type="log4net.Appender.RollingFileAppender"> <param name="Encoding" value="utf-8" /> <file value="Logs/debug" /> <appendToFile value="true" /> <!-- Immediate flush on error log, to avoid data loss with sudden termination. --> <immediateFlush value="true" /> <staticLogFileName value="false" /> <rollingStyle value="Date" /> <datepattern value="-yyyy.MM.dd'.log'" /> <!-- Prevents Orchard.exe from displaying locking debug messages. --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level% [%property{trace}] %logger - %message%newline" /> </layout> </appender> <appender name="error-file" type="log4net.Appender.RollingFileAppender"> <param name="Encoding" value="utf-8" /> <file value="Logs/error" /> <appendToFile value="true" /> <!-- Immediate flush on error log, to avoid data loss with sudden termination. --> <immediateFlush value="true" /> <staticLogFileName value="false" /> <rollingStyle value="Date" /> <datepattern value="-yyyy.MM.dd'.log'" /> <!-- Prevents Orchard.exe from displaying locking debug messages. --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <filter type="log4net.Filter.LevelRangeFilter"> <!-- Only ERROR and FATAL log messages end up in this target, even if child loggers accept lower priority. --> <levelMin value="ERROR" /> </filter> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%t] %logger - %message [%P{Url}]%newline" /> </layout> </appender> </log4net>
在
Program.cs中添加log4net配置如下图
// ===============多环境log4net配置=============== IWebHostEnvironment environment = builder.Environment; var configName = "log4net" + (environment.IsProduction() ? string.Empty : "." + environment.EnvironmentName) + ".config"; builder.Logging.AddLog4Net(configName, watch: true); // ===============多环境log4net配置===============
现在所有的配置都完成了。
相关文章推荐
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- CKEditor3.1在asp.net环境下上传文件的配置
- CKEditor3.0在asp.net环境下上传文件的配置,集成CKFinder
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP.NET 多环境下配置文件web.config的灵活配置
- .NetCore 使用Jenkins发布多环境下的项目并适配数据库EFCore数据库更新及替换配置文件
- CKEditor3.0在asp.net环境下上传文件的配置,集成CKFinder
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- 【转】CKEditor3.0在asp.net环境下上传文件的配置,集成CKFinder
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP.NET 多环境下配置文件web.config的灵活配置
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- AspNetCore 多环境配置 以及注册 消费Consul
- CKEditor3.0在asp.net环境下上传文件的配置,集成CKFinder