威海做网站多少钱,论坛购物网站开发,广撒网网站,如何成立一个网站前言在之前的文章中有讲到AspNetCore多环境配置文件的应用#xff0c;我们根据自己多种环境分别配置多个appsettings.$EnvironmentName.json文件。在实际的开发中我们可能会遇到不只一个配置文件#xff0c;如当我们使用log4net日志库时#xff0c;喜欢使用单独的log4net.co… 前言在之前的文章中有讲到AspNetCore多环境配置文件的应用我们根据自己多种环境分别配置多个appsettings.$EnvironmentName.json文件。在实际的开发中我们可能会遇到不只一个配置文件如当我们使用log4net日志库时喜欢使用单独的log4net.config配置文件。并且我们还遇到不同环境下的log4net配置文件还存在差异。这时我们可能可以效仿appsettings.json多环境配置的风格实现多环境配置文件。配置log4net新建Web项目安装Microsoft.Extensions.Logging.Log4Net.AspNetCore创建两个环境的配置文件分别如图并设置文件属性使其在发布时能够复制到根目录两个配置文件内容如下例如我们这里生产环境的配置文件多增加一个KafkaAppender使日志发送至kafka消息丢列中然后kafka的消费者将日志消费至ES集群,而本地开发的日志则没必要进行上传ES。!--log4net.config--
?xml version1.0 encodingutf-8 ?
log4net!-- If you are looking here and want more output, first thing to do is change root/priority/value to INFO or ALL. --rootValue of priority may be ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF.priority valueALL /appender-ref referror-file /appender-ref refdebug-file /appender-ref refKafkaAppender //root!-- Example of turning on the output from a component or namespace. --logger nameCommonappender-ref refdebugger/priority valueDEBUG //loggerappender nameKafkaAppender typelog4net.Kafka.Appender.KafkaAppender, log4net.Kafka.AppenderKafkaSettingsbrokersadd value127.0.0.1:9092 //brokerstopic typelog4net.Layout.PatternLayoutconversionPattern valuekafka.logstash //topic/KafkaSettingslayout typelog4net.Layout.PatternLayoutconversionPattern value%date %level% [%t] %logger - %message //layout/appenderappender namedebugger typelog4net.Appender.DebugAppender!-- Sends log messages to Visual Studio if attached. --immediateFlush valuetrue /layout typelog4net.Layout.SimpleLayout //appenderappender namedebug-file typelog4net.Appender.RollingFileAppenderparam nameEncoding valueutf-8 /file valueLogs/debug /appendToFile valuetrue /!-- Immediate flush on error log, to avoid data loss with sudden termination. --immediateFlush valuetrue /staticLogFileName valuefalse /rollingStyle valueDate /datepattern value-yyyy.MM.dd.log /!-- Prevents Orchard.exe from displaying locking debug messages. --lockingModel typelog4net.Appender.FileAppenderMinimalLock /layout typelog4net.Layout.PatternLayoutconversionPattern value%date %level% [%property{trace}] %logger - %message%newline //layout/appenderappender nameerror-file typelog4net.Appender.RollingFileAppenderparam nameEncoding valueutf-8 /file valueLogs/error /appendToFile valuetrue /!-- Immediate flush on error log, to avoid data loss with sudden termination. --immediateFlush valuetrue /staticLogFileName valuefalse /rollingStyle valueDate /datepattern value-yyyy.MM.dd.log /!-- Prevents Orchard.exe from displaying locking debug messages. --lockingModel typelog4net.Appender.FileAppenderMinimalLock /filter typelog4net.Filter.LevelRangeFilter!-- Only ERROR and FATAL log messages end up in this target, even if child loggers accept lower priority. --levelMin valueERROR //filterlayout typelog4net.Layout.PatternLayoutconversionPattern value%date [%t] %logger - %message [%P{Url}]%newline //layout/appender/log4net!--log4net.Development.config--
?xml version1.0 encodingutf-8 ?
log4net!-- If you are looking here and want more output, first thing to do is change root/priority/value to INFO or ALL. --rootValue of priority may be ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF.priority valueALL /appender-ref referror-file /appender-ref refdebug-file //root!-- Example of turning on the output from a component or namespace. --logger nameCommonappender-ref refdebugger/priority valueDEBUG //loggerappender namedebugger typelog4net.Appender.DebugAppender!-- Sends log messages to Visual Studio if attached. --immediateFlush valuetrue /layout typelog4net.Layout.SimpleLayout //appenderappender namedebug-file typelog4net.Appender.RollingFileAppenderparam nameEncoding valueutf-8 /file valueLogs/debug /appendToFile valuetrue /!-- Immediate flush on error log, to avoid data loss with sudden termination. --immediateFlush valuetrue /staticLogFileName valuefalse /rollingStyle valueDate /datepattern value-yyyy.MM.dd.log /!-- Prevents Orchard.exe from displaying locking debug messages. --lockingModel typelog4net.Appender.FileAppenderMinimalLock /layout typelog4net.Layout.PatternLayoutconversionPattern value%date %level% [%property{trace}] %logger - %message%newline //layout/appenderappender nameerror-file typelog4net.Appender.RollingFileAppenderparam nameEncoding valueutf-8 /file valueLogs/error /appendToFile valuetrue /!-- Immediate flush on error log, to avoid data loss with sudden termination. --immediateFlush valuetrue /staticLogFileName valuefalse /rollingStyle valueDate /datepattern value-yyyy.MM.dd.log /!-- Prevents Orchard.exe from displaying locking debug messages. --lockingModel typelog4net.Appender.FileAppenderMinimalLock /filter typelog4net.Filter.LevelRangeFilter!-- Only ERROR and FATAL log messages end up in this target, even if child loggers accept lower priority. --levelMin valueERROR //filterlayout typelog4net.Layout.PatternLayoutconversionPattern 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配置现在所有的配置都完成了。