有没有办法制作fileAppender变量的名称? 即当我在我的控制器上调用一个带有对象的动作时,我想将其写入日志文件。 该文件的名称如下所示: yyyyMMdd_hhmssms_ [控制器] _ [方法]以.json
这就是我在配置文件中的内容:
<appender name="JsonFileAppender" type="log4net.Appender.RollingFileAppender" >
<file value="c:\temp\" />
<datePattern value="yyyyMMdd_hh.mm.ss.ms_%thread{CommonApplicationData}'.json'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%message%newline" />
</layout>
</appender>
返回以下文件名:20160224_01.30.28.3028_P1rea24 {Co30onApplicaPionDaPa} .json
答案 0 :(得分:4)
一种方法是在代码中设置环境变量,如:
templateUrl: '<input id=\"foo\"></input>'
然后,在log4net XML中配置此环境变量:
Environment.SetEnvironmentVariable("APPENDER_FILE", "Your File Path");
答案 1 :(得分:2)
您可以在运行时访问log4net配置的appender,如此
var repository = (Hierarchy)LogManager.GetRepository();
var appenders = repository.GetAppenders().Where(x => x is FileAppender);
您可以按名称
获取特定的appendervar appender = appenders.FirstOfDefault(x => x.Name.Equals("MyAppeader"));
一旦你有了一个appender,你可以根据自己的喜好修改它。您想要设置文件路径
appender.File = @"c:\folder\yyyyMMdd_hhmssms_[controller]_[method].json";
你不应该做任何其他事情,因为log4net应该自动开始使用新配置。
把这一切都放到一个小帮手方法中,你就得到了这个
public static void SetAppenderPath(string appender, string path)
{
var repository = (Hierarchy)LogManager.GetRepository();
var appenders = repository.GetAppenders().Where(x => x is FileAppender);
var appender = appenders.FirstOfDefault(x => x.Name.Equals(appender));
if (appender == null)
{
throw new ConfigurationErrorsException("Appender not found (" + appender + ")");
}
appender.File = path;
}
...
LogHelper.SetAppenderPath("MyAppender", @"yyyyMMdd_hhmssms_[controller]_[method].json");