你好,我正在尝试在托管于IIS的WCF服务中使用Log4Net,但它没有记录任何数据。有人成功地在WCF服务中使用Log4Net进行日志记录吗?
我在自托管的WCF应用程序中成功使用了log4net。
我们设置的步骤非常简单。
Add the following line to the above project's AssemblyInfo.cs file (allows a custom log4net config file to be specified, which log4net will "watch" for updates. Quick, but maybe a bit dirty..)
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
Add log4net.config file to console project and copy it to the output directory (file properties: "Copy to Output Directory")
Declare the logger as private static member of the classes where you need logging:
private static readonly log4net.ILog Logger =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Log where required:
Logger.Info("Starting console service host");
ServiceHostFactory
中定义一个单独的程序集来保持DRY时(例如),则定义工厂的程序集是从log4net和XmlConfigurator
属性的角度来看的“根”程序集。用户权限已确认。
授予写入和修改权限。
Assamble.cs
在末尾添加:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config"));
通过log4nets的调试输出,它告诉我它在寻找log4net.config文件时是在根IIS目录中查找,而不是在我的应用程序路径中的任何位置。
因此,更改该行以避免此问题(如果您也以这种方式配置自定义配置):
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(@"G:\MyProject\log4net.config"));
我正在使用log4net在托管在IIS 7中的MSMQ激活的WCF服务中。我使用Ninject进行依赖注入,并安装了Ninject.Extensions.Wcf,Ninject.Extensions.Logging.log4net NuGet包,并将log4net配置部分添加到Web.config文件中。
我看到有人建议将log4net初始化代码添加到Global.asax中,但据我所知,这对于MSMQ激活的服务不起作用。然而,Ninject安装了WebActivator包,允许您在Web应用程序启动时运行初始化代码。Ninject将自己的代码放入App_Start\NinjectWebCommon.cs中。要配置log4net,您需要将代码添加到Start方法中。我的代码如下:
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
// configure log4net
XmlConfigurator.Configure();
bootstrapper.Initialize(CreateKernel);
}