log4net配置文件

文章介绍了在.NET中通过builder.Logging.AddLog4Net注册log4net,并详细展示了log4net.config的配置,包括RollingFileAppender(文件日志,支持大小和日期滚动)、AdoNetAppender(写入SQLite和MySQL数据库)以及EventLogAppender(写入Windows事件日志),并设置了级别过滤、布局模式等。

作者:zhuge···预计阅读 18 分钟·850 阅读·0 评论
log4net配置文件

program.cs

注册

builder.Logging.AddLog4Net(“log4net.config”);

using

Log4Net

Microsoft.Extensions.Logging.Log4Net.AspNetCore

log4net.config

<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true">
    //开启调试
    <!— Define some output appenders —>
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="log\log.txt" />

        <!—追加日志内容—>
        <appendToFile value="true" />

        <!—防止多线程时不能写Log,官方说线程非安全—>
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

        <!—可以为:Once|Size|Date|Composite—>
        <!—Composite为Size和Date的组合—>
        <rollingStyle value="Composite" />

        <!—当备份文件时,为文件名加的后缀—>
        <datePattern value="yyyyMMdd.txt" />

        <!—日志最大个数,都是最新的—>
        <!—rollingStyle节点为Size时,只能有value个日志—>
        <!—rollingStyle节点为Composite时,每天有value个日志—>
        <maxSizeRollBackups value="3" />

        <!—可用的单位:KB|MB|GB—>
        <maximumFileSize value="2KB" />

        <!—置为true,当前最新日志文件名永远为file节中的名字—>
        <staticLogFileName value="true" />

        <!—输出级别在INFO和ERROR之间的日志—>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="FATAL" />
        </filter>

        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
        </layout>
    </appender>
    <!—写入到sqlite数据库—>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
        <!—缓冲区事件的大小,设置为小于或者等于1的值,则不会发生任何缓冲,日志记录同步执行,否则事件将被缓冲—>
        <bufferSize value="1" />
        <!—数据库类型—>
        <connectionType value="System.Data.SQLite.SQLiteConnection,System.Data.SQLite" />
        <!—数据库地址—>
        <connectionString value="Data Source=~/log.db;Version=3;" />
        <!—写入日志语句—>
        <commandText value="INSERT INTO Log(Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" />
        <parameter>
            <!—配置字段—>
            <parameterName value="@Date" />
            <!—字段数据类型—>
            <dbType value="DateTime" />
            <!—北京时间—>
            <layout type="log4net.Layout.RawTimeStampLayout" />
        </parameter>
        <parameter>
            <parameterName value="@Level" />
            <dbType value="String" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%level" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@Logger" />
            <dbType value="String" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%logger" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@Message" />
            <dbType value="String" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%message" />
            </layout>
        </parameter>
    </appender>
    <!—写入到mysql数据库—>
    <appender name="MysqlAdoNetAppender" type="log4net.Appender.AdoNetAppender">
        <!—缓冲区事件的大小,设置为小于或者等于1的值,则不会发生任何缓冲,日志记录同步执行,否则事件将被缓冲—>
        <bufferSize value="1" />
        <!—数据库类型—>
        <connectionType value="MySql.Data.MySqlClient.MySqlConnection,MySql.Data" />
        <!—数据库地址—>
        <connectionString value="server=192.168.1.188;port=3306;database=enav;uid=root;pwd=root;" />
        <!—写入日志语句—>
        <commandText value="INSERT INTO lognet(Date, Level, Logger, Message) VALUES (@date, @level, @logger, @message)" />
        <parameter>
            <!—配置字段—>
            <parameterName value="@date" />
            <!—字段数据类型—>
            <dbType value="DateTime" />
            <!—北京时间—>
            <layout type="log4net.Layout.RawTimeStampLayout" />
        </parameter>
        <parameter>
            <parameterName value="@level" />
            <dbType value="String" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%level" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@logger" />
            <dbType value="String" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%logger" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@message" />
            <dbType value="String" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%message" />
            </layout>
        </parameter>
    </appender>
    <!—写入到windows日志中—>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
    </appender>

    <!— levels: OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL —>

    <root>
        <priority value="ALL"/>
        <level value="ALL"/>
        <appender-ref ref="FileAppender" />

        <!—<appender-ref ref="AdoNetAppender" />
        <appender-ref ref="MysqlAdoNetAppender" />
        <appender-ref ref="EventLogAppender" />—>
    </root>
</log4net>

相关文章

评论

加载中...