我正在尝试在Windows服务中使用Castle log4Net工具。我无法写日志,所以我想我会创建一个控制台应用程序,试图让它先工作。我仍然没有看到写入的日志文件。我做错了什么或错过了什么?
namespace CastleLoggingFacilityWithLog4Net
{
class Program
{
private static IWindsorContainer _container;
static void Main(string[] args)
{
_container = new WindsorContainer();
_container.Register(Component.For<IService>().ImplementedBy<Service>().LifestyleTransient());
_container.AddFacility<LoggingFacility>(f => f.LogUsing(LoggerImplementation.Log4net));
//_container.Install(FromAssembly.This());
var service = _container.Resolve<IService>();
service.TestLogging();
}
}
public interface IService
{
void TestLogging();
}
public class Service : IService
{
private ILogger logger = NullLogger.Instance;
public void TestLogging()
{
Logger.Info("this is a test");
}
public ILogger Logger
{
get { return logger; }
set { logger = value; }
}
}
}
在log4net.config中添加我的log4net配置如下......
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="logging\log.txt" />
<appendToFile value="true" />
<datePattern value="dd-MM-yyyy'.log'" />
<staticLogFileName value="false" />
<rollingStyle value="Date"/>
<maximumFileSize value="10MB" />
<maxSizeRollBackups value="5" />
<dateTimeStrategy type="log4net.Appender.RollingFileAppender+UniversalDateTime" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%utcdate %-5level %logger - %message%newline%exception" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFile" />
</root>
</log4net>
</configuration>
答案 0 :(得分:1)
事实证明我的代码或配置没有任何问题。问题是log4net配置没有设置为复制到输出目录!遗憾的是,Castle或log4net都无法告诉我日志文件无法找到。
答案 1 :(得分:0)
您必须在Main()中添加以下代码为了生成日志文件,这将导致使用configSource
log4net.Config.XmlConfigurator.Configure();
编辑: 根据app.config中的文件值。它会将日志文件写入ProgramFiles,并非所有用户都有权在程序文件中编写/编辑文件。因此,我建议在AppData中编写日志文件。
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="${LOCALAPPDATA}\logging\log.txt" />
....
</appender>