在Web应用程序中configurationLog4Net

我有这个代码和下面的configuration文件:

ILog log = LogManager.GetLogger(typeof(MyClass)); log.Debug("Testing"); 

TestProj目录不创build,如果我创build它,没有TestLog.txt文件,没有日志…什么都没有。

任何想法?

谢谢,

configuration文件

 <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> 

您需要调用XmlConfiguratorConfigurefunction

 log4net.Config.XmlConfigurator.Configure(); 

要么在您的第一个login电话之前或在您的Global.asax像这样的呼叫:

 protected void Application_Start(Object sender, EventArgs e) { log4net.Config.XmlConfigurator.Configure(); } 

另一种方法是将此行添加到Web应用程序的程序集信息中:

 // Configure log4net using the .config file [assembly: log4net.Config.XmlConfigurator(Watch = true)] 

类似于尖叫。

1:将以下行添加到AssemblyInfo类中

 [assembly: log4net.Config.XmlConfigurator(Watch = true)] 

2:确保你不使用.Net Framework 4 Client Profile作为Target Framework (我认为这是好的在你身边,否则它甚至不会编译)

3:确保你很早就在程序中login。 否则,在某些情况下,它将不会被正确初始化(请参阅log4net常见问题解答 )。

因此,在Global.asax的应用程序启动过程中logging一些东西

 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:确保您有权在给定path上创build文件和文件夹(如果文件夹本身也不存在)

5:其余的给定的信息看起来不错

通常这是由于缺less权限。 Windows帐户正在运行的本地IIS应用程序池可能没有写入应用程序目录的权限。 你可以在某处创build一个目录,给每个人写权限,并将你的log4netconfiguration指向该目录。 如果在那里创build日志文件,则可以修改所需日志目录的权限,以便应用程序池可以写入。

另一个原因可能是未初始化的log4net。 在winforms应用程序中,通常在应用程序启动时configurationlog4net。 在Web应用程序中,可以dynamic地执行此操作(在日志logging组件中,检查是否可以使用其名称创build特定的Iloglogging器,如果不是,则调用configure())或者在global.asax.cs中启动应用程序。

我也有类似的问题。 日志不创build。

请检查logging器属性名称是否应与您的LogManager.GetLogger(“名称”)匹配

 <logger name="Mylog"> <level value="All"></level> <appender-ref ref="RollingLogFileAppender" /> </logger> private static readonly ILog Log = LogManager.GetLogger("Mylog");