Questions tagged «log4net»

Apache log4net库是一个工具,可帮助程序员将日志语句输出到各种输出目标。log4net是优秀的Apache log4j™框架到Microsoft®.NET运行时的移植。在利用.NET运行时中的新功能的同时,我们使框架在本质上与原始log4j相似。


12
如何从头开始以编程方式配置log4net(无配置)
我知道这是个坏主意,但是...我想从头开始以编程方式配置log4net,而没有配置文件。我正在为我和我的团队开发一个简单的日志记录应用程序,以用于我们负责的一堆相对较小的部门应用程序。我希望他们都记录到同一个数据库。日志记录应用程序只是log4net的包装,其中预配置了AdoNetAppender。 所有应用程序均已部署ClickOnce,这对部署配置文件提出了一个小问题。如果配置文件是核心项目的一部分,则可以将其属性设置为与程序集一起部署。但这是链接应用程序的一部分,因此我没有选择将其与主应用程序一起部署。(如果那不是真的,请让我知道)。 可能由于这是一个坏主意,因此似乎没有多少示例代码可用于从头开始以编程方式配置log4net。到目前为止,这就是我所拥有的。 Dim apndr As New AdoNetAppender() apndr.CommandText = "INSERT INTO LOG_ENTRY (LOG_DTM, LOG_LEVEL, LOGGER, MESSAGE, PROGRAM, USER_ID, MACHINE, EXCEPTION) VALUES (@log_date, @log_level, @logger, @message, @program, @user, @machine, @exception)" apndr.ConnectionString = connectionString apndr.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" apndr.CommandType = CommandType.Text Dim logDate As New AdoNetAppenderParameter() logDate.ParameterName = …
87 .net  logging  log4net 

4
正确使用log4net的方式(记录器命名)
有两种配置和使用log4net的方法。第一个是可以配置自己的附加程序和关联的记录器的时间: <!-- language: xml --> <appender name="myLogAppender" type="log4net.Appender.RollingFileAppender" > <file value="Logs\myLog.log" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level - %message%n" /> </layout> </appender> <logger name="myLog"> <level value="All"></level> <appender-ref ref="myLogAppender" /> </logger> 然后,当我想在日志中写入内容时,可以执行以下操作: ILog log = LogManager.GetLogger("myLog"); log.Info("message"); 使用它的另一种方法是将root配置为我想要的详细信息: <!-- language: xml --> <root> <level value="Error" /> <appender-ref ref="myLogAppender" /> </root> 在这种情况下,我可以记录以下消息: …

3
在同一解决方案中引用2个不同版本的log4net
我正在使用引用log4net 1.2.10.0的NHibernate 2.1.2.400。在同一项目中,我还使用了简单的记账SDK,可悲的是它仍在使用log4net 1.2.9.0。 因此,如果我引用log4net 1.2.10.0,但我可以使NHibernate正常工作,但是simpleSDK无法正常工作。反之亦然... 我猜大多数问题都来自log4net更改了其组装密钥这一事实。我尝试使用绑定重定向没有成功:2个DLL没有相同的密钥。 我正在考虑重新编译NHibernate以使用log4net 1.2.9.0,但似乎做错了,我的感觉是,Simply Accounting不会很快更新其SDK以使用log4net 1.2.10.0。 处理此问题的最佳方法是什么?有可能解决吗?
80 .net  nhibernate  dll  log4net 

10
类库的app.config
我看不到VS2008向导为类库生成的app.config文件。在我的研究中,我发现在一个应用程序中仅存在一个app.config。 将app.config手动添加到类库是否是一件坏事,还是在类库中有其他方法可以满足app.config的目的? 我需要将log4net配置信息存储在app.config文件中。

4
如何将Log4net与依赖注入一起使用
我试图找出依赖注入框架对log4net的正确模式和用法。 Log4Net使用ILog界面,但需要我打电话 LogManager.GetLogger(Reflection.MethodBase.GetCurrentMethod().DeclaringType) 在每个需要记录信息的类或方法中。这似乎违反了IoC原则,使我不得不使用Log4Net。 我应该以某种方式在某处放置另一层抽象吗? 另外,我需要这样记录自定义属性,例如当前用户名: log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName; 我如何封装它,这样我就不必记住每次都要做,而仍然保持当前正在记录的方法。我应该做这样的事情还是我完全错过了分数? public static class Logger { public static void LogException(Type declaringType, string message, Exception ex) { log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName; ILog log = LogManager.GetLogger(declaringType); log.Error(message, ex); } }

4
两个不同级别的Log4Net记录到同一记录器的两个不同附加程序
我们有两个启用Log4net日志记录的不同asp.net应用程序。它们都具有相同版本的Log4Net 1.2.10.0。 我们已经将log4net.Appender.AdoNetAppender记录器添加到这两个记录器中,并希望为根记录器将信息级别记录到该记录器中,还希望将一个根记录器的错误级别记录到文件附加器中。我们的配置如下: <?xml version="1.0" encoding="utf-8"?> <log4net> <appender name="filelogAppender" type="log4net.Appender.RollingFileAppender" > <file value="..\logs\app.debug.log" /> <encoding value="utf-8" /> <staticLogFileName value="true" /> <datePattern value=".yyyyMMdd.'log'" /> <rollingStyle value="Composite" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <appendToFile value="true" /> <maximumFileSize value="1MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%3thread] %-5level %property{log4net:HostName} [%property{Revision}] %logger %message%n" /> </layout> </appender> <!-- use …
76 c#  asp.net  logging  log4net 

9
log4net将在哪里创建此日志文件?
当我将文件值设置logs\log-file.txt为时,它将在哪里创建该文件夹?在/bin目录中? 我的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

4
如何使用log4net记录跟踪消息?
我正在使用log4net将写入日志消息记录到滚动日志文件中。 现在,我还将所有跟踪消息从重定向System.Diagnostics.Trace到该日志文件。我该如何配置?我试图在log4net文档中找到有关此内容的任何内容,但均未成功。有可能吗? 我想要这样做的原因是因为我对第三方库的跟踪消息感兴趣。 <log4net> <appender name="R1" type="log4net.Appender.RollingFileAppender"> <file value="C:\Logs\MyService.log" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <maxSizeRollBackups value="10" /> <datePattern value="yyyyMMdd" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> </log4net>
75 c#  .net  log4net 

11
如何以编程方式更改文件位置?
我对Log4net完全陌生。我设法通过添加配置文件和简单的日志记录来解决问题。我已经将值硬编码为,"C:\temp\log.txt"但这还不够好。 日志必须转到特殊文件夹 path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 并且此路径会根据您使用的是Windows Server 2008,Windows XP还是Vista等而改变... 如何仅以编程方式更改log4net中文件的位置? 这是我所做的: <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> </configSections> <log4net> <root> <level value="DEBUG" /> <appender-ref ref="LogFileAppender" /> </root> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="C:\temp\log.txt" /> <param name="AppendToFile" value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> …
75 c#  log4net 

5
依赖注入和命名记录器
我有兴趣了解有关人们如何使用依赖项注入平台注入日志的更多信息。尽管下面的链接和我的示例引用了log4net和Unity,但我不一定要使用这两个。对于依赖项注入/ IOC,我可能会使用MEF,因为这是其余项目(大型)正在建立的标准。 我对依赖关系注入/ ioc非常陌生,对C#和.NET也很陌生(在VC6和VB6大约十年后,在C#/。NET中很少编写生产代码)。我对现有的各种日志记录解决方案进行了很多调查,因此我认为我对它们的功能集有很好的了解。我只是对注入一个依赖项的实际机制还不够熟悉(或者,也许更“正确”地,是获取一个依赖项的抽象版本)。 我看过其他与日志记录和/或依赖注入相关的帖子,例如: 依赖注入和日志记录接口 记录最佳做法 Log4Net Wrapper类是什么样的? 再次关于log4net和Unity IOC配置 我的问题与“如何使用IOC工具yyy注入xxx日志记录平台”无关。而是,我对人们如何处理包装日志记录平台(通常但不总是建议)和配置(即app.config)感兴趣。例如,以log4net为例,我可以配置(在app.config中)许多记录器,然后以使用如下代码的标准方式获取这些记录器(不依赖注入): private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 另外,如果我的记录器不是以类命名,而是以功能区域命名,则可以这样做: private static readonly ILog logger = LogManager.GetLogger("Login"); private static readonly ILog logger = LogManager.GetLogger("Query"); private static readonly ILog logger = LogManager.GetLogger("Report"); 因此,我想我的“要求”将是这样的: 我想将我的产品的来源与对日志记录平台的直接依赖相隔离。 我希望能够通过某种依赖注入(可能是MEF)直接或间接解析特定的命名记录器实例(可能在同一命名实例的所有请求者之间共享同一实例)。 我不知道这是否很难,但是我希望能够按需获取命名记录器(与类记录器不同)。例如,我可能会基于类名称为我的类创建一个记录器,但是一种方法需要特别繁重的诊断,而我想单独进行控制。换句话说,我可能希望单个类“依赖”两个单独的记录器实例。 让我们从数字1开始。我已经阅读了很多文章,主要是关于stackoverflow的,关于包装是否是个好主意。请参阅上面的“最佳实践”链接,并转到jeffrey hantin的注释中,以获取有关包装log4net的原因的观点。如果您进行了包裹(如果可以有效包裹),您是否将包裹严格地用于注射/去除直接依赖?还是您还会尝试抽象出部分或全部log4net app.config信息? 假设我要使用System.Diagnostics,可能要实现一个基于接口的记录器(甚至使用“通用的” ILogger …

5
log4net与TraceSource [关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 在此线程中,许多人表示他们使用log4net。我是TraceSources的迷,并且想知道为什么使用log4net。 这就是为什么我喜欢跟踪源的原因: 可插拔侦听器-XML,TextFile,控制台,EventLog,自行滚动 可自定义的跟踪开关(错误,警告,信息,详细,开始,结束,自定义) 可定制的配置 记录应用程序块只是大量的TraceListeners 活动/范围的关联(例如,将ASP.NET请求中的所有日志与给定客户相关联 通过Service Trace Viewer,您可以可视化针对这些活动的事件 所有这些都可以在app.config / web.config中进行配置。 由于.NET框架内部使用TraceSources,因此它也为我提供了一种一致的配置跟踪方式-使用log4net,我必须配置log4net以及TraceSources。 log4net给我什么,TraceSources不给我(或者通过编写几个自定义TraceListeners不能做到)?

5
Log4Net:滚动文件附加程序,定义扩展名
我希望我的日志文件看起来像这样:2009-02-13.log 但问题是我似乎找不到任何添加.log扩展名的方法。 我已经尝试了很多东西,但是没有任何帮助。这是我到目前为止的内容: <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Logs/Log4Net/.log"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyy-MM-dd" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> </layout> </appender>

8
Log4Net:使用滚动日期在RollingFileAppender上设置最大备份文件
我具有以下配置,但无法找到有关如何设置日期滚动样式的最大备份文件的任何文档。我知道您可以通过使用maxSizeRollBackups使用尺寸滚动样式来做到这一点。 <appender name="AppLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="mylog.log" /> <appendToFile value="true" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <rollingStyle value="Date" /> <datePattern value=".yyMMdd.'log'" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d %-5p %c - %m%n" /> </layout> </appender>
69 .net  log4net 

9
设置日志文件名以在Log4j中包括当前日期
我想将log4j和log4net附加程序的日志文件名设置为具有当前日期。我们正在做每日翻转,但是当前的日志文件没有日期。日志文件名称格式为 logname.2008-10-10.log 有人知道我这样做的最好方法吗? 编辑:我忘了提到我们也想在log4net中做到这一点。另外,任何解决方案都需要在JBoss中可用。
68 java  .net  logging  log4net  log4j 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.