2010-05-12 106 views
56

当我将文件值设置为logs\log-file.txt时,它会在哪里创建该文件夹?在/bin目录中?log4net将在哪里创建此日志文件?

我的web.config文件看起来是这样的:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="logs\log-file.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
</log4net> 

这是登录正确的方法:

ILog logger = LogManager.GetLogger(typeof(CCController)); 
logger.Error("Some Page", ex); // where ex is the exception instance 
+0

您能否接受其中一个答案是正确的?谢谢 – 2017-09-12 09:27:22

回答

18

文件值可以是像一个绝对路径为“C:\日志\ log.txt“或我相信相对于bin目录的相对路径。

至于落实的话,我通常发生在任何类的顶部,下面我打算登录:最后

private static readonly ILog Log = LogManager.GetLogger( 
MethodBase.GetCurrentMethod().DeclaringType); 

,你可以用它像这样:

Log.Debug("This is a DEBUG level message."); 
+1

嗯..它似乎没有创建任何地方的日志文件,我没有得到任何错误? – Blankman 2010-05-12 03:37:34

+2

听起来像一个权限问题。我会将配置映射到您的Web目录之外的绝对路径。之后,确保日志文件和文件夹具有权限,以允许asp.net工作进程正确访问。 – 2010-05-12 03:52:22

+0

对于相对路径,我喜欢日志文件在项目级别: 2015-01-26 15:24:11

0

我认为你的示例保存到你的项目文件夹中,除非默认的iis或.NET用户已经创建了权限,否则它将无法创建日志文件夹。

我会首先创建日志文件夹,并允许IIS用户完全权限,并查看是否正在创建日志文件。

4

对于日志文件夹和文件的东西,去@Bens answer

虽然我会评论创建日志部分。伊莫没有正确的方式。当手工编写记录器时,我会按照自己的方式进行:

ILog logger = LogManager.GetLogger(typeof(CCController)); 

因为它简短而简洁。

这么说,我不创建记录器实例的类内,这些天,I let my IoC container inject it for me

9

Log4net正在保存到您的项目文件夹中。如:\SolutionFolder\ProjectFolder\bin\SolutionConfiguration\logs\log-file.txt

其中:

  • SolutionFolder是您保存您的解决方案
  • ProjectFolder是文件夹在您的项目住到解决方案和
  • SolutionConfiguration是contais项目的所有二进制文件的文件夹(默认为调试或释放)

希望这有助于!

42

如果你希望你的日志文件是在一个指定的位置,这将在运行时决定可能那么你的项目输出目录的地方,你可以配置你以这种方式

<file type="log4net.Util.PatternString" value="%property{LogFileName}.txt" /> 

然后.config文件条目呼吁log4net configure之前的代码,设置如下图所示

log4net.GlobalContext.Properties["LogFileName"] = @"E:\\file1"; //log file path 
log4net.Config.XmlConfigurator.Configure(); 

如何简单的是它的新路径? :)

+1

大把戏,它可以帮助把所有的配置放在一个地方:) – 2015-10-09 06:42:34

32

它会在您的项目/解决方案的根目录下创建文件。

您可以在应用程序的web.config中指定选择的位置如下:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:/ServiceLogs/Olympus.Core.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value=".yyyyMMdd.log" /> 
     <maximumFileSize value="5MB" /> 
     <staticLogFileName value="true" /> 
     <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> 
     <maxSizeRollBackups value="-1" /> 
     <countDirection value="1" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level [%thread] %logger - %message%newline%exception" /> 
     </layout> 
    </appender> 

文件标签指定的位置。

+7

+1直接回答问题的唯一答案“ log4net将在哪里创建这个日志文件?“ – Keith 2014-05-27 19:03:13

+0

嗨Oladipo,我没有路径定义日志是在bin文件夹中创建的。 – Pompair 2017-03-29 09:47:56

2
FileAppender appender = repository.GetAppenders().OfType<FileAppender>().FirstOrDefault(); 
if (appender != null) 
    logger.DebugFormat("log file located at : {0}", appender.File); 
else 
    logger.Error("Could not locate fileAppender");