简单的记录一下log4net的使用方式.详细的方法网上有很多滴.
配置文件:
View Code<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".log"" /> <staticLogFileName value="false"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %-5level %logger - %message%newline"/> </layout> </appender> </log4net>在代码中关联配置文件和代码,使程序读取配置文件并初始化.
有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的日志文件路径
View Codevar 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(); } }