我有以下代码和配置文件:
ILog log = LogManager.GetLogger(typeof(MyClass));
log.Debug("Testing");
TestProj
目录未创建,如果我创建它,则没有TestLog.txt
文件,没有日志......没有。
有什么想法吗?
谢谢,
配置文件
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\\TestProj\\TestLog.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<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="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
答案 0 :(得分:118)
您需要调用Configure
XmlConfigurator
功能
log4net.Config.XmlConfigurator.Configure();
在第一次登录之前调用或在Global.asax中调用,如下所示:
protected void Application_Start(Object sender, EventArgs e) {
log4net.Config.XmlConfigurator.Configure();
}
答案 1 :(得分:22)
另一种方法是将此行添加到Web应用程序的程序集信息中:
// Configure log4net using the .config file
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
与Shriek相似。
答案 2 :(得分:9)
1:将以下行添加到AssemblyInfo类
中[assembly: log4net.Config.XmlConfigurator(Watch = true)]
2:确保你没有使用.Net Framework 4 Client Profile
作为Target Framework
(我认为你可以这样做,因为否则它甚至无法编译)
3:确保您在程序中尽早登录。否则,在某些情况下,它将无法正确初始化(请参阅log4net FAQ)。
因此,在Global.asax
中的应用程序启动期间记录一些内容public class Global : System.Web.HttpApplication
{
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(Global));
protected void Application_Start(object sender, EventArgs e)
{
Log.Info("Startup application.");
}
}
4:确保您有权在给定路径上创建文件和文件夹(如果文件夹本身也不存在)
5:您提供的其他信息看起来不错
答案 3 :(得分:2)
这通常是由于缺少权限。运行本地IIS应用程序池的Windows帐户可能没有写入应用程序目录的权限。你可以在某个地方创建一个目录,给每个人写入权限并将你的log4net配置指向该目录。如果在那里创建了日志文件,则可以修改所需日志目录的权限,以便应用程序池可以写入该文件。
另一个原因可能是未初始化的log4net。在winforms应用程序中,通常在应用程序启动时配置log4net。在Web应用程序中,您可以动态执行此操作(在您的日志记录组件中,检查是否可以使用其名称创建特定的Ilog记录器,如果不是 - > gt;调用configure()),或者在global.asax中启动应用程序时再次创建。 CS。
答案 4 :(得分:1)
我也有类似的问题。日志没有创建。
请检查记录器属性名称是否与您的LogManager.GetLogger匹配(&#34;名称&#34;)
<logger name="Mylog">
<level value="All"></level>
<appender-ref ref="RollingLogFileAppender" />
</logger>
private static readonly ILog Log = LogManager.GetLogger("Mylog");