Log4net Log4.net-如何在运行时登录到文件夹集?
对于此应用程序(CMS),Log4net在Config/Log4net.Config中配置 我需要设置在运行时动态放置日志文件的路径 我已尝试将以下代码添加到global.asax(和OnApplicationStarting) plus将配置更改为Log4net Log4.net-如何在运行时登录到文件夹集?,log4net,log4net-configuration,Log4net,Log4net Configuration,对于此应用程序(CMS),Log4net在Config/Log4net.Config中配置 我需要设置在运行时动态放置日志文件的路径 我已尝试将以下代码添加到global.asax(和OnApplicationStarting) plus将配置更改为 <file type="log4net.Util.PatternString" value="c:\Logs\%property{path}\AppLog.log" /> 在log4net.config中 它首先创建一个目录c:
<file type="log4net.Util.PatternString" value="c:\Logs\%property{path}\AppLog.log" />
在log4net.config中
它首先创建一个目录c:\Logs\(null)\AppLog.log
,然后开始日志记录-过一会儿,它创建所需的目录-c:\Logs\testlog\AppLog.log
,并继续在该目录中进行日志记录
在日志记录开始之前,我似乎无法连接。有人对我应该怎么做有什么解决方案或想法吗?这样我就不会先得到(null)目录了
我是否可以访问web.config中设置的值,并将其用作文件夹名称中的动态部分?您需要将其放入:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
在AssemblyInfo.cs
并在获取记录器之前添加属性。
以下是一个工作示例:
我的配置:
<appender name="RollingFileAppender" type="log4net.appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="C:\MyLogs\%property{LogFileName}.txt"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maximumFileSize value="10MB"/>
<maxSizeRollBackups value="5"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/>
</layout>
</appender>
有什么进展吗?
<appender name="RollingFileAppender" type="log4net.appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="C:\MyLogs\%property{LogFileName}.txt"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maximumFileSize value="10MB"/>
<maxSizeRollBackups value="5"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/>
</layout>
</appender>
using System;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Log4NetConsoleApplication
{
class Program
{
static void Main(string[] args)
{
log4net.GlobalContext.Properties["LogFileName"] = "log";
log4net.ILog log = LogHelper.GetLogger();
Console.WriteLine("hello world");
log.Error("This is my error message");
Console.ReadLine();
}
}
}