我用log4net编写了一个控制台应用程序,我的log4net配置如下
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
<file value="Process_Log\" />
<appendToFile value="true" />
<datePattern value="yyyy-MM-dd.TXT" />
<maxSizeRollBackups value="10" />
<rollingStyle value="Date" />
<maximumFileSize value="10MB" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %p %message [%logger] %n" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
运行控制台应用程序,它有输出日志文件.但是使用SQL Server代理作业或Windows任务计划程序调用它,它没有写日志文件.
小智 10
我解决了这个问题.从Visual Studio运行解决方案时,log4net从"bin"文件夹中找出配置文件.因此,它需要运行所需的信息.但是当您通过Windows任务计划程序运行应用程序时,情况就不同了.这次,Windows任务计划程序尝试从此位置"C:\ Windows\System32"中找出配置文件.因为,当您运行Windows任务计划程序时,它会将默认应用程序文件夹位置视为"C:\ Windows\System32".
您可以编写以下代码来导航应用程序以加载log4net配置文件.这里,配置文件名是"LogConfiguration.config".
var log4NetConfigDirectory =
AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;
var log4NetConfigFilePath = Path.Combine(log4NetConfigDirectory, "LogConfiguration.config");
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(log4NetConfigFilePath));
Run Code Online (Sandbox Code Playgroud)
user3626918接受的关于该问题的答案是正确的(工作目录错误)。作为建议的代码更改解决方案的替代方法,您可以:
配置计划任务的“开始于”目录(属性->操作->编辑...)
确认运行计划任务的帐户有权写入日志文件目标。
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |