ログ管理に基づいてCommon.Logging + log4netの実装

オリジナルリンク: http://www.cnblogs.com/xyb0226/p/11115884.html

序文

Common.Loggingはありコモンズ・ログの.NETバージョンをプロジェクト(Apacheのログファサードは、単純なログとデカップリング機能を達成するために、ログを提供して最初のインターフェイスを提供します)。その目的は、反復プロセスで統一されたインタフェースシステムを提供する、異なるロギングの実装柔軟なスイッチング・アセンブリ(log4netの、NLog、EntLibなど)「すべての.NETをログ実装」することです。

原則

操作ログ・ホスト・インタフェースの例としてCommon.Logging.LogManagerクラスは、外部のログのインスタンスを取得するために3つのメソッドを提供します


772156-20170607144217668-100533315.png

アダプタログは、図ファクトリクラスの例で示され、コンフィギュレーションファイルから取得し、作成されています

772156-20170607145238543-1807110040.png

web.configファイルの構成、factoryAdapterノードタイプCommon.Logging.Log4Net.Log4NetLoggerFactoryAdapterは、そのようなログ・ファクトリー・クラスのインスタンスを達成することです。
common.logging設定

プロジェクトを統合する方法

log4netのログ管理を実現するためのプロジェクトに統合する方法と組み合わせるCommon.logging?

インストールされたバージョンを選択します

ビューlog4netの公式リリースレコードが1.2.11のバージョンからバージョン2.0.6(5月17日)から、.NET 3.5および.NET 4.0をサポートするために始めたことがわかった.NETのコアと.NETの標準1.3をサポートするようになりました。だから我々は選択したlog4netのバージョンは、少なくともバージョン1.2.11を持っています。log4netのCommon.Loggingの適応は、プラグインバージョン、多くの(log4netの適応のほとんどが異なるバージョン)があり、IはCommon.Logging.Log4Net1211を選びました。
Common.Logging.Log4Netバージョンを適応しました

プロジェクトはNugetインストールパッケージを使用することをお勧めしますそのlog4netのの、自動的に関連付けるバージョン

Common.Loggingをインストールします。

Install-Package Common.Logging -Version 3.3.1

Common.Logging.Log4Net1211をインストールします。

Install-Package Common.Logging.Log4Net1211 -Version 3.3.1

web.configファイルの設定

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
  </configSections>
  <common>
    <!--[DEBUG < INFO < WARN < ERROR < FATAL]-->
    <logging>
      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
        <!--表示log4net的配置直接写在配置文件里-->
        <!--<arg key="configType" value="INLINE"/>-->
        <!--log4net使用独立的配置文件-->
        <arg key="configType" value="FILE-WATCH" />
        <arg key="configFile" value="~/XmlConfig/log4net.config" />
      </factoryAdapter>
    </logging>
  </common>
</configuration>

log4netの設定

<?xml version="1.0" encoding="utf-8"?>

<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <!--目录路径,可以是相对路径或绝对路径-->
        <file value="Log/" />
        <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
        <datePattern value='yyyy-MM-dd/"info.log"' />
        <!--追加到文件-->
        <appendToFile value="true" />
        <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite" />
        <!--写到一个文件-->
        <staticLogFileName value="false" />
        <!--单个文件大小。单位:KB|MB|GB-->
        <maximumFileSize value="200MB" />
        <!--最多保留的文件数,设为"-1"则不限-->
        <maxSizeRollBackups value="-1" />
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
        </layout>
    </appender>

    <appender name="TraceRollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <!--目录路径,可以是相对路径或绝对路径-->
        <file value="Log/" />
        <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
        <datePattern value='yyyy-MM-dd/"trace.log"' />
        <!--追加到文件-->
        <appendToFile value="true" />
        <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite" />
        <!--写到一个文件-->
        <staticLogFileName value="false" />
        <!--单个文件大小。单位:KB|MB|GB-->
        <maximumFileSize value="200MB" />
        <!--最多保留的文件数,设为"-1"则不限-->
        <maxSizeRollBackups value="-1" />
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
        </layout>
    </appender>

    <appender name="WarnRollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <!--目录路径,可以是相对路径或绝对路径-->
        <file value="Log/" />
        <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
        <datePattern value='yyyy-MM-dd/"warn.log"' />
        <!--追加到文件-->
        <appendToFile value="true" />
        <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite" />
        <!--写到一个文件-->
        <staticLogFileName value="false" />
        <!--单个文件大小。单位:KB|MB|GB-->
        <maximumFileSize value="200MB" />
        <!--最多保留的文件数,设为"-1"则不限-->
        <maxSizeRollBackups value="-1" />
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
        </layout>
    </appender>

    <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <!--目录路径,可以是相对路径或绝对路径-->
        <file value="Log/" />
        <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
        <datePattern value='yyyy-MM-dd/"error.log"' />
        <!--追加到文件-->
        <appendToFile value="true" />
        <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite" />
        <!--写到一个文件-->
        <staticLogFileName value="false" />
        <!--单个文件大小。单位:KB|MB|GB-->
        <maximumFileSize value="200MB" />
        <!--最多保留的文件数,设为"-1"则不限-->
        <maxSizeRollBackups value="-1" />
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
        </layout>
    </appender>

    <root>
        <appender-ref ref="RollingFileAppender" />
        <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF
    比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录
    如果没有定义LEVEL的值,则缺省为DEBUG-->
        <level value="INFO" />
    </root>

    <!--TraceLog 名称固定,写入调试跟踪日志-->
    <logger name="TraceLog" additivity="false">
        <appender-ref ref="TraceRollingFileAppender" />
        <level value="INFO" />
    </logger>
    <!--Warnlog 名称固定,写入警告日志-->
    <logger name="WarnLog" additivity="false">
        <appender-ref ref="WarnRollingFileAppender" />
        <level value="WARN" />
    </logger>
    <!--Errorlog 名称固定,写入异常错误日志-->
    <logger name="ErrorLog" additivity="false">
        <appender-ref ref="ErrorRollingFileAppender" />
        <level value="ERROR" />
    </logger>

</log4net>

その他のパラメータの設定手順は、移動してくださいlog4netの公式サイトを

アプリケーション

実際のプロジェクトでは、我々はまた、具体的には、以下を使用して、(のErrorLog、WarnLog、トレースログ)定義されたログを取得するために使用LogHelperクラスのインスタンスをカプセル化します。

LogHelper.Trace("log222");
LogHelper.Warn("log222");
LogHelper.Error(new Exception('出错了'));

LogHelper関連のソースコード、およびテストのデモ、私は上の仕上げgithubのを配置する必要がありhttps://github.com/yinboxie/BlogExampleDemo

参照

図1に示すように、使用してログ管理仕様Common.Logging + log4netの
2、ソース解析Common.Logging
3、構成及びlog4netの使用の簡単な説明
図4に示すように、非常によく詳細に説明log4netの

ます。https://www.cnblogs.com/xyb0226/p/11115884.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_30617561/article/details/95063354