2010-04-27 164 views
6

我不确定这是否是发布此问题的正确论坛。但我只是希望这里有人可能在过去使用过log4net,所以希望得到一些帮助。log4net日志记录没有创建日志文件

我正在使用log4net来记录我的异常。配置设置是这样的:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
</configSections> 
<log4net debug="false"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:\Logs\sample.log" /> 
    <appendToFile value="true"/> 
    <rollingStyle value="Size"/> 
    <maxSizeRollBackups value="10"/> 
    <maximumFileSize value="10MB"/> 
    <staticLogFileName value="true"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-5level %date %logger.%method[line %line] - %message%newline"/> 
    </layout> 
</appender> 
<root> 
    <level value="INFO"/> 
    <appender-ref ref="RollingLogFileAppender"/> 
</root> 
</log4net> 
</configuration> 

我开始加入此配置的web.config,但是我得到一个错误(VS工作室找不到一个架构log4net-“找不到架构信息元素log4net“)。所以我跟着这个链接(Log4Net "Could not find schema information" messages),并在一个单独的XML文件中配置我的设置并添加下面的代码行中我AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xmlfile.xml", Watch = true)] 

而在实际的代码,我把这个行:

public void CreateUser(String username, String password) 
{ 
try 
{ 
    log.Info("Inside createuser"); 
    //code for creating user 
} 
catch(exception e) 
{ 
    log.Info("something happened in create user", e); 
} 
} 

问题是日志文件没有被创建。我看不到C:\ Logs中的任何内容。有人可以告诉我我在做什么错吗?

任何建议/输入将是非常有益的。

谢谢大家提前。

回答

1

您的日志文件未被创建可能是因为ASPNET用户没有写入C:\Logs\目录的权限。确保您将ASPNET的完整权限授予您的应用程序想要创建日志文件的任何地方。

6

我不能让设置在Asembly.cs没有在我的Global.asax中添加此来的Application_Start工作:

log4net.Config.XmlConfigurator.Configure(); 
+0

这将需要配置在app/web.config – 2010-04-27 18:24:57

+0

不一定。该方法有几个可以使用的重载。 – jvilalta 2010-04-27 19:25:08

+0

我看到了,我有一个印象,你建议使用过载没有参数... – 2010-04-28 06:33:55

1

所以您加载的配置文件,但你那么喜欢设置日志变量所以

private static readonly ILog log = LogManager.GetLogger(typeof(Program)); 
+0

是的,我正在这样做 – 2010-04-27 16:30:51

0

除非你指定单独的配置文件log4net的完整路径预计文件将在返回的路径:

System.AppDomain.CurrentDomain.BaseDirectory 

如果您有一个简单的控制台应用程序,这通常意味着包含程序集的目录,但在其他情况下这不一定是真实的。有很多方法可以解决这个问题(参见我的回答here)。

要开始它可能会更容易将log4net配置回到app/web.config并忽略架构警告。如果日志记录工作正常,那么您可以确定您没有权限问题,并且可以转到下一步以在外部文件中进行配置。

你在写什么类型的应用程序?也许我可以用我的答案更具体一点...

+0

谢谢你的回应。我正在使用一项服务。现在这个问题已经解决了。显然,在配置服务本身时出现了一些问题。一旦这个问题得到解决,其他一切工作。 – 2010-04-29 14:57:29