window服務中配置值Log4Net(轉載)

 

window服務中配置值Log4Net

轉載來源 https://www.cnblogs.com/Can-daydayup/p/10223239.html

 https://www.cnblogs.com/skyheaving/p/12294241.html

 

思維導航:

 

文章正文:

 

一、使用背景:

  C#window服務下添加一個日誌記錄程序集(Log4Net.dll)

 

二、添加和使用步驟如下:

下載並引入Log4Net.dll程序集到項目中

  下載地址:http://logging.apache.org/log4net/download_log4net.cgi

在App.Config中添加對應的節點

<!--重點configsections必須是第一個節點1og4net配置-->
<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>

 在App.Config中添加Log4Net.dll初始化信息(主要一些按照什麼格式存儲,存儲位置的配置)

複製代碼
  <log4net>
  <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
  <!-- Set root logger level to ERROR and its appenders -->
  <root>
  <level value="ALL" />
  <appender-ref ref="SysAppender" />
  </root>
  <!-- Print only messages of level DEBUG or above in the packages -->
  <logger name="WebLogger">
  <level value="DEBUG" />
  </logger>
  <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
  <!--日誌文件夾名稱-->
  <param name="File" value="ProJectsLogs/" />
  <param name="AppendToFile" value="true" />
  <param name="RollingStyle" value="Date" />
  <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
  <param name="StaticLogFileName" value="false" />
  <layout type="log4net.Layout.PatternLayout,log4net">
  <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
  </layout>
  </appender>
  <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
  <layout type="log4net.Layout.PatternLayout,log4net">
  <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
  </layout>
  </appender>
  </log4net>
複製代碼

 實際應用中App.config改動:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <root>
      <appender-ref ref="RollingLogFileAppender" />
      <appender-ref ref="ConsoleAppender" />
    </root>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%date] %level [%thread][%c{1}:%line] - %m%n" />
      </layout>
    </appender>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--日誌存放位置 ~/..-->
      <param name="File" value="logs\\" />
      <!--追加到文本末尾-->
      <param name="AppendToFile" value="true" />
      <!--最多產生的日誌文件數,超過則只保留最新的n個。設定值value="-1"爲不限文件數-->
      <param name="MaxSizeRollBackups" value="50" />
      <!--最大文件大小-->
      <param name="MaximumFileSize" value="5MB"/>
      <param name="RollingStyle" value="Date" />
      <!--文件命名方式-->
      <param name="DatePattern" value="yyyy-MM-dd'.log'" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout">
        
        <conversionPattern value="[%date] %level [%thread][%c{1}:%line]  %n%m%n" />
      </layout>
    </appender>
  </log4net>
  
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <appSettings>
    <add key="website" value="www.baidu.com" />
    <add key="user" value="UserName" />
    <add key="password" value="Password" />
    <add key="localFilePath" value="D:ftp\data" />
    <add key="nameList" value="AWS_30min.dat,AWS_10min.dat,TMS_10min.dat,TMS_30min.dat" />
  </appSettings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

  <connectionStrings>

    <add name="FarmWeatherEntities" connectionString="metadata=res://*/FarmWeather.csdl|res://*/FarmWeather.ssdl|res://*/FarmWeather.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=FarmWeather;persist security info=True;user id=sa;password=yjcd8923459565;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    
  </connectionStrings>


</configuration>

 

在AssemblyInfo.cs:配置文件中讀取配置Log4net.dll

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

 使用Log4Net.Dll記錄日誌

複製代碼
//首先實例化Log4net
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

//使用記錄信息
log.Debug("Debug", new Exception("Debug"));
log.Info("Info", new Exception("Info"));
log.Warn("Warn", new Exception("Warn"));
log.Error("Error", new Exception("Error"));
log.Fatal("Fatal", new Exception("Fatal"));
複製代碼

 實際應用中可以封裝成一個類

    public class LogManage
    {

        private static readonly ILog logger = LogManager.GetLogger(typeof(LogManage));
        static LogManage()
        {

            BasicConfigurator.Configure();
        }

        public static void Error(Exception ex)
        {
            logger.Error(ex.Message, ex);
        }

        public static void Error(string msg)
        {
            logger.Error(msg);
        }

        public static void Info(string msg)
        {
            logger.Info(msg);
        }
    }

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章