最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Asp.Net?Core配置多環(huán)境log4net配置文件的全過(guò)程

 更新時(shí)間:2022年04月19日 11:03:07   作者:Gui.H  
在.NET世界中有非常多的日志框架,然而log4net是目前為止最流行的一款日志框架,下面這篇文章主要給大家介紹了關(guān)于Asp.Net?Core配置多環(huán)境log4net配置文件的相關(guān)資料,需要的朋友可以參考下

前言

在之前的文章中有講到AspNetCore多環(huán)境配置文件的應(yīng)用,我們根據(jù)自己多種環(huán)境分別配置多個(gè)appsettings.$EnvironmentName.json文件。

在實(shí)際的開(kāi)發(fā)中我們可能會(huì)遇到不只一個(gè)配置文件,如當(dāng)我們使用log4net日志庫(kù)時(shí),喜歡使用單獨(dú)的log4net.config配置文件。并且我們還遇到不同環(huán)境下的配置文件還存在差異。這時(shí)我們可能可以效仿appsettings.json多環(huán)境配置的風(fēng)格實(shí)現(xiàn)多環(huán)境配置文件。

配置log4net

新建Web項(xiàng)目

安裝Microsoft.Extensions.Logging.Log4Net.AspNetCore

創(chuàng)建兩個(gè)環(huán)境的配置文件分別如圖,并設(shè)置文件屬性使其在發(fā)布時(shí)能夠復(fù)制到根目錄

兩個(gè)配置文件內(nèi)容如下,例如我們這里生產(chǎn)環(huán)境的配置文件多增加一個(gè)KafkaAppender使日志發(fā)送至kafka消息丟列中,然后kafka的消費(fèi)者將日志消費(fèi)至ES集群,而本地開(kāi)發(fā)的日志則沒(méi)必要進(jìn)行上傳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配置如下圖

// ===============多環(huán)境log4net配置===============
IWebHostEnvironment environment = builder.Environment;
var configName = "log4net" + (environment.IsProduction() ? string.Empty : environment.EnvironmentName) + ".config";
builder.Logging.AddLog4Net(configName, watch: true);
// ===============多環(huán)境log4net配置===============

現(xiàn)在所有的配置都完成了。

總結(jié)

到此這篇關(guān)于Asp.Net Core配置多環(huán)境log4net配置文件的文章就介紹到這了,更多相關(guān)AspNetCore多環(huán)境log4net配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

镶黄旗| 兴义市| 东辽县| 苍溪县| 平乡县| 冀州市| 读书| 黑河市| 安乡县| 云梦县| 玉龙| 游戏| 白河县| 资溪县| 那曲县| 凉城县| 吉木乃县| 凉城县| 喀喇沁旗| 惠州市| 汝南县| 深水埗区| 梓潼县| 故城县| 镶黄旗| 杂多县| 穆棱市| 嘉定区| 泰和县| 孝感市| 浮梁县| 镶黄旗| 仁布县| 双柏县| 宁陕县| 罗山县| 冷水江市| 赤壁市| 太康县| 龙里县| 泸州市|