Log4net使用方法

简单的记录一下log4net的使用方式.详细的方法网上有很多滴.

配置文件:

<configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    </configSections>

    <log4net>
        <root>
            <level value="ALL"/>
            <appender-ref ref="RollingFileAppender"/>
            <!--<appender-ref ref="AdoNetAppender"/>-->
        </root>

        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
            <file value="D:log.txt"/>
            <appendToFile value="false"/>
            <maxSizeRollBackups value="-1"/>
            <maximumFileSize value="2MB"/>
            <rollingStyle value="Date"/>
            <datePattern value="yyyy-MM-dd&quot;.log&quot;" />
            <staticLogFileName value="false"/>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date %-5level %logger - %message%newline"/>
            </layout>
        </appender>
    </log4net>
View Code

在代码中关联配置文件和代码,使程序读取配置文件并初始化.

有2种方式:

1. 在运行的代码中添加log4net.Config.XmlConfigurator.Configure();有多个重载的方法,可以指定配置文件,也可以指定XMLElement元素,也可以为空,表示使用使用应用程序的配置文件.

2. 在AssemblyInfo中添加[assembly: log4net.Config.XmlConfigurator(ConfigFile="",ConfigFileExtension="config")]

如果指定配置文件的名字ConfigFile,也就是在运行目录下的配置文件的名字,这个配置文件可能不会生成到输出目录,需要设置配置文件的属性,始终复制.

也可以指定文件的扩展名.ConfigFileExtension,是指明了和可执行程序集同名的配置文件的扩展名.这两个参数不能同时使用

在Revit二次开发中,使用Log4net记录日志,在不显式指定配置文件时,会按照默认规则查找,会在Revit的运行目录applicationBaseDirectory组合插件DLL的名称生成配置文件的全路径.这样会导致出错.需要显式指定

fullPath2ConfigFile = Path.Combine(applicationBaseDirectory, SystemInfo.AssemblyFileName(sourceAssembly) + m_configFileExtension);

在运行时修改log4Net的日志文件路径

            var reposistory = log4net.LogManager.GetRepository();
            var appenders = reposistory.GetAppenders();
            foreach (var item in appenders) {
                var fileAppender = item as log4net.Appender.FileAppender;
                if (fileAppender != null) {
                    fileAppender.File = Path.Combine(Path.GetDirectoryName(SystemInfoConfig.Log4netConfigFile), "log.txt");
                    fileAppender.ActivateOptions();
                }
            }
View Code

 

原文地址:https://www.cnblogs.com/zhangliming/p/3506690.html