我是console工程
1.web.config 中的内容
<configSections>
<section name="WorkflowRuntime" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections><log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\test.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="2KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<footer value="[Footer]--Test By cxy1981
" />
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<root>
<priority value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
2.AssemblyInfo中的内容
[assembly: log4net.Config.DOMConfigurator(ConfigFile = "Web.config", Watch = true)]
3.Main函数
class Program
{
// ILog logger=LogManager.GetLogger(typeof(类));
private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
//记录严重错误
log.Fatal("fatal", new Exception("发生了一个致命错误"));
//记录错误日志
log.Error("error", new Exception("发生了一个异常"));
//记录一般信息
log.Info("info");
//记录调试信息
log.Debug("debug");
//记录警告信息
log.Warn("warn");
Console.WriteLine("日志记录完毕。");
Console.Read();
}
}
可是就是看不到c:\test.txt文件
我在项目中这样用的,可能log4net版本不同吧
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net debug="false">
<root>
<level value="ALL" />
<!-- ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF -->
<appender-ref ref="LogFileAppender" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="xxxx.log" />
<appendToFile value="true" />
<encoding value="utf-8" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="1000MB" />
<rollingStyle value="Size" />
<staticLogFileName value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
string assemblyDirPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string configFilePath = assemblyDirPath + Path.DirectorySeparatorChar + "log4net.config";
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(configFilePath));
ILog log = LogManager.GetLogger("logger");
log.Info("Application_Start...");
你看我的没错吧?,我已经搞了一天了,我觉得我写的没什么问题啊。 我的版本是1.2.0.30714,您那个dll还在吗,能给我发一个吗?提前感谢您了
@威少: 怎么发你呢 在公司还不一定能发。
我看一下我用的版本,你在网上下一个也行。
产品版本:1.2
文件版本:1.2.10.0
@Albert Fei: 特别感谢您对这个问题的持续关注,我已经下了,但是还是不行,我现在不知道到底是什么地方出错了,您有qq吗?如果有,希望您能留一下,我想向您请教一下,我的qq:893912962
@威少: 你程序编译能成功吗 有没有报错和警告什么的?
估计是这一行的问题:<file value="c:\test.txt" />
你的程序应该是没有直接在c盘的根目录下写文件的权限,改成<file value="test.txt" />相对路径试试。
您说的这个我刚才试了一下,要是按您这么说,他应该生成到和Web.config同级的目录吧?但是没有成功,您能再帮忙看看吗?
@威少: 要知道web应用程序是在临时目录中执行,<file value="test.txt" /> 这样写,即使生成了文件,在网站目录下也是找不到文件的。
@芬达: 我已经弄好了,多谢持续关注
我自己已经搞定了