我们有两个不同的asp.net应用程序启用Log4net日志logging。 他们都有相同版本的Log4Net 1.2.10.0。 我们已经将log4net.Appender.AdoNetAppenderlogging器添加到这两个logging器中,并且想要为根logging器loggingInfo级别,但是也想logging到根logging器的Error级别以文件appender。 我们的configuration如下; <?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 [DB] GO CREATE […]
我正在使用Log4Net和AdoNetAppender将消息从简单的systray应用程序logging到SQL Server 2005数据库中。 我想logging机器名称和日志消息,因为这个应用程序将运行在多台机器上,我需要知道消息来自哪一个。 但是,我无法find一种方法来通过我使用的appender的log4net.Layout.PatternLayout来公开这些信息。 有没有办法通过log4net以这种方式login机器名?
我有一个空的 app.config文件,但我仍然得到NHibernatedebugging日志 NHibernate: SELECT this_.LogID as LogID71_0_, this_.Level as Level71_0_, this_.Message as Message71_0_, this_.EventTime as EventTime71_0_, this_.Component as … 我尝试添加一个ERROR日志级别的log4netconfiguration,但没有用。 我怎样才能停止这些日志消息? 我感到困惑的是为什么这些出现在第一个地方,如果我有一个空的app.config。 对我来说这是没有意义的,我必须configuration它不打印这些消息 – 默认应该closures。 难道是我的代码是以编程方式设置它们吗? 我该找什么?
这与650694类似,但是没有答案被接受,我根本得不到任何这些build议,我怀疑我可能会有一点点不同的情况。 我打电话给log4net.Config.XmlConfigurator.Configure()。 但是在程序中的那个点之后,我想把日志logging的阈值改变成仅在运行时已知的值。 从另外一个问题,我尝试了: ((log4net.Repository.Hierarchy.Logger)mylogger.Logger).Level = log4net.Core.Level.Error; 和: var appender = new log4net.Appender.ColoredConsoleAppender(); appender.Layout = new log4net.Layout.PatternLayout(@"%date %-5level %message%newline"); appender.Threshold = log4net.Core.Level.Error; appender.ActivateOptions(); log4net.Config.BasicConfigurator.Configure(appender); 但似乎没有任何影响:我仍然在控制台上看到DEBUG和INFO日志语句。 我的直觉是我添加了一个新的appender,它对XMLconfiguration中声明的appender没有影响(它告诉它打印DEBUG级别的消息),但是我还没有任何证据。 我一直在挖掘log4net API一段时间,而我只是没有看到它。 有没有简单的我失踪?
我已经添加了对我的项目的log4net程序集dll的引用。 当我build立我得到一个警告说: 警告程序集“Lib \ log4net.dll”被错误地指定为一个文件。 我在MSDN上查找这个错误的帮助 ,它说: 当生成过程检测到文件引用实际上是(托pipe或本机)程序集时,会在生成应用程序清单期间生成此警告。 这正是我所做的; 文件引用是一个程序集。 我在这里告诉了什么? 如何添加对程序集dll的引用,而不添加对程序集dll的引用?
我有这个代码和下面的configuration文件: ILog log = LogManager.GetLogger(typeof(MyClass)); log.Debug("Testing"); TestProj目录不创build,如果我创build它,没有TestLog.txt文件,没有日志…什么都没有。 任何想法? 谢谢, configuration文件 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> <log4net debug="true"> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="C:\\TestProj\\TestLog.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M – %m%n" /> </layout> </appender> <root> <level value="DEBUG" /> […]
我用AdoNetAppender使用log4net。 AdoNetAppender似乎有一个Flush方法 。 无论如何,我可以从我的代码中调用它吗? 我试图创build一个pipe理页面来查看数据库日志中的所有条目,我想要设置log4net的缓冲区大小= 100(或更多),然后我希望pipe理员能够点击pipe理button页面强制log4net将缓冲的日志条目写入数据库(不closureslog4net)。 那可能吗?
我决定使用log4net作为一个新的Web服务项目的logging器。 一切工作正常,但我得到了很多像下面这样的消息,对于我在web.config使用的每个log4net标记: 找不到元素“log4net”的架构信息… 以下是我的web.config的相关部分: <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="C:\log.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="100KB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level: %message%newline" /> </layout> </appender> <logger name="TIMServerLog"> <level value="DEBUG" /> <appender-ref ref="RollingFileAppender" /> </logger> </log4net> 解决了: 将每个log4net特定标记复制到一个单独的xml文件。 […]
使用log4net,我已经看到了使用称为NDC的每线程堆栈上下文标签的可能性。 通过指定%x或%ndc格式参数,在此堆栈上推送的标签将显示在PatternLayout中。 用法是这样的: ILog log = log4net.LogManager.GetLogger(…) ; //pattern layout format: "[%ndc] – %message%newline" log.Info("message 1"); using(log4net.NDC.Push("context") { using(log4net.NDC.Push("inner_context") { log.Info("message 2"); } log.Info("message 3"); } log.Info("message 4"); 输出是这样的: null – message 1 context inner_context – message 2 context – message 3 null – message 4 在你使用log4net的编程经验中,你什么时候发现这个function是有用的?
有没有办法让log4netconfiguration忽略一个特定的类? 例如,我们通常在每个class级创build一个日志。 与此类似: private static readonly ILog Log = log4net.LogManager.GetLogger("MyClass"); 问题是MyClasslogging了大量的数据,并且很难find其他类的信息。 它的另一个使用MyClass开发,所以我不能只是进入和改变日志文件,但在我的环境,我想忽略这些。 我可以将我的configuration文件设置为忽略来自特定类的消息吗?