gpt4 book ai didi

log4net - SQL作业或任务计划程序调用log4net,不写入日志文件

转载 作者:行者123 更新时间:2023-12-02 11:19:25 25 4
gpt4 key购买 nike

我用 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>

运行控制台应用程序,它有输出日志文件。但使用 SQL Server Agent Jobs 或 Windows Task Scheduler 调用它,它没有写入日志文件。

最佳答案

我发现了问题所在。当您从 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));

关于log4net - SQL作业或任务计划程序调用log4net,不写入日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26545919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com