我直接从项目模板Windows Service在VS2017中的c#中构建了基本Windows服务。建没问题。安装没问题。
这是带有log4net部分的app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<backColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="WARN" />
<foreColor value="White" />
<backColor value="Yellow" />
</mapping>
<mapping>
<level value="INFO" />
<foreColor value="White" />
</mapping>
<mapping>
<level value="DEBUG" />
<backColor value="Green" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
</configuration>
我想记录一些事件,例如:
public partial class Service1 : ServiceBase
{
private ILog log = LogManager.GetLogger(typeof(Service1));
public Service1()
{
InitializeComponent();
XmlConfigurator.Configure();
}
protected override void OnStart(string[] args)
{
log.Info("OnStart");
}
protected override void OnStop()
{
log.Info("OnStop");
}
}
启动服务时,我看不到该exe所在的文件夹(Debug \ Bin)中创建的任何log.txt文件。
知道为什么吗?
答案 0 :(得分:1)
我认为这里的问题是您的log
变量在调用构造函数之前已初始化。因此,基本上,您在致电LogManager.GetLogger
之前先致电XmlConfigurator.Configure()
配置log4net后,尝试在构造函数中初始化log
,看看是否能解决您的问题。
public Service1()
{
InitializeComponent();
XmlConfigurator.Configure();
log = LogManager.GetLogger(typeof(Service1));
}
答案 1 :(得分:1)
自从我之前的直觉似乎添加了另一个答案似乎是错误的(或者您实际上在这里有两个问题)。假设您发布了整个app.config文件,就好像您在其中的任何地方声明log4net config部分一样:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
也许是问题所在?
答案 2 :(得分:0)
在我的特殊情况下,我们总是在类构造函数上初始化Log4Net时设置app.config文件:
Warning (from warnings module):
File"/Library/Frameworks/Python.framework/Versions/3.6/lib/
python3.6/
importlib/_bootstrap.py", line 219
return f(*args, **kwds)
RuntimeWarning: compiletime version 3.5 of module
'tensorflow.python.framework.fast_tensor_util' does not match
runtime version 3.6