提问人:iDipa 提问时间:8/2/2023 最后编辑:TylerHiDipa 更新时间:8/3/2023 访问量:74
任务计划程序:带有 Log4Net 的控制台应用程序无法正常工作
Task Scheduler : Console app with Log4Net not working
问:
我有一个控制台应用程序,其中包含用于日志的log4net(V-2.0.15)。配置如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<connectionStrings>
</connectionStrings>
<appSettings>
<!--<add key="log4net.Internal.Debug" value="true"/>-->
</appSettings>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\logs1\log.txt" />
<encoding value="utf-8" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<!--<maxSizeRollBackups value="10" />
<maximumFileSize value="100MB" />
<staticLogFileName value="true" />-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
C#代码如下:
private static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
try
{
///Coding...
}
catch (Exception ex)
{
Log.Error("------- Error Message : " + ex.Message + "------- StackTrace : " + ((ex.StackTrace != null) ? ex.StackTrace.ToString() : ""));
}
}
现在,我将该控制台应用程序发布到本地文件夹,并在创建“任务计划程序 -> 基本任务”时,我选择exe文件并创建了它。但它什么也没做。我在这里错过了什么???
答:
0赞
rick
8/2/2023
#1
log4net.config
<log4net>
<root>
<level value="All" />
<appender-ref ref="YourLog" />
</root>
<appender name="YourLog" type="log4net.Appender.RollingFileAppender">
<file value="logs/yourlog.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="3" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p|%d{ dd.MM.yyyy HH:mm:ss}|%m|%method|%stacktrace{5} (line %line)%newline" />
</layout>
</appender>
</log4net>
程序集信息.cs
// some other stuffs
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]
法典
private static readonly ILog _log= LogManager.GetLogger("YourLog");
private static void Main(string[] args)
{
try
{
}
catch (Exception e)
{
_log.Error("Oh no! Something bad happened", e);
}
}
和它的名称无关紧要。仅出于最佳实践,我会使用 log4net,因为稍后您将需要另一个配置。 构建后,这更多是用于项目配置。appender
.config
App.config
YOUR-PROJECT-NAME.config
评论
0赞
iDipa
8/2/2023
在我的解决方案中,app.config 具有该 log4net 配置。Log4net.config是什么?它在哪里??
0赞
rick
8/2/2023
这就是 Log4net 读取您的配置的方式。它应该在您的项目中。
0赞
iDipa
8/2/2023
发布后,我在发布文件夹中有这么多文件。没有获得要更新的 - EPPlus.dll.deploy - EPPlus.Interfaces.dll.deploy - EPPlus.System.Drawing.dll.deploy - log4net.dll.deploy - Microsoft.IO.RecyclableMemoryStream.dll.deploy - TaskScheduler -- Applocation Manifest - TaskScheduler.exe.config.deploy - TaskScheduler.exe.deploy - TaskScheduler.exe.manifest
0赞
iDipa
8/2/2023
你能给我提供任何链接吗?我可以按照步骤操作并检查我的解决方案?
0赞
rick
8/2/2023
啊,好吧,我不知道你缺乏这个。我会改进我的答案。
评论
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
<conversionPattern value="%-5p|%d{ dd.MM.yyyy HH:mm:ss}|%m|%method|%stacktrace{5} (line %line)%newline" />
Log
LogManager.GetLogger("RollingLogFileAppender");