我尝试配置log4net以将所有内容记录到控制台输出.我有一个名为的配置文件Log4Net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我有我的主要课程(只是一个测试案例)
namespace TestLog4Net {
class Program {
private static readonly ILog log = LogManager.GetLogger(typeof(Program));
static void Main(string[] args) {
log.Info("Info");
log.Error("Error");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我把这些线添加到了 AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(
ConfigFile = "Log4Net.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
但现在没有记录,有人可以解释一下吗?
我有一个奇怪的问题.我在解决方案中有多个项目.其中一个是WebAPI,它记录得很好.另一个是MVC管理站点,这个不会登录.这是我尝试过的.
我的日志代码:
var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.Info("Some log message");
Run Code Online (Sandbox Code Playgroud)
在assemblyInfo中,我尝试了以下各项......
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "logging.config", Watch = true)]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "C:\\full_path\\logging.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
在Global.asax application_start中我尝试了以下(删除assemblyInfo行)
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("Logging.config"));
var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.Info("Application starting");
Run Code Online (Sandbox Code Playgroud)
这也不会创建日志.我可以创建一个的方法是使用global.asax中的代码和logging.config的完整路径.
我很困惑,因为webapi只使用只有相对路径的assemblyInfo.我还使用AssemblyInfo解决方案(相对路径)制作了带有MVC项目的示例虚拟解决方案,并且它也在那里工作.
有任何想法吗?
更新 - 发现问题
我必须在Application_Start中设置配置文件观察器:
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config"));
Run Code Online (Sandbox Code Playgroud)
事实证明,DotNetOpenAuth.Core.dll使用log4net,并且使用AssemblyInfo解决方案无法正常工作.我在这个博客中找到了详细信息:http://hanskindberg.wordpress.com/2013/04/07/log4net-configuration/
谢谢