Tag: log4net

如何为log4net指定通用的应用程序数据文件夹?

我希望log4net将日志文件(使用RollingFileAppender)写入常用应用程序数据文件夹的子文件夹(例如C:\ Documents and Settings \ All Users \ Application Data \ Company \ Product \ Logs)。 但是,在Win XP上,没有指定此文件夹的环境variables。 我们有%ALLUSERSPROFILE% ,我们有%APPDATA% ,但没有像%ALLUSERSAPPDATA% 。 以编程方式,我可以使用Environment.SpecialFolder.CommonApplicationData ,但我需要把它放在log4netconfiguration,如下所示: <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="%ALLUSERSAPPDATA%\Company\Product\Logs\error.log" /> </appender> 好的,我们可以在我们的设置中定义这个,但也许有人提出一个更好的主意?

如何使用NHibernate将SQL调用logging到Visual Studio的控制台?

我有NHibernate的以下configuration文件: <?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.connection_string">Server=.\SQLEXPRESS;Database=mydb;Integrated Security=True;</property> <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="connection.release_mode">auto</property> <property name="adonet.batch_size">500</property> <property name="show_sql">true</property> </session-factory> </hibernate-configuration> 但是SQL不显示在Visual Studio的输出窗口中。 是否必须安装log4net ? 还是应该show_sql独自工作?

什么时候应该使用Tracing vs Logger.NET,Enterprise Library,log4net或Ukadc.Diagnostics?

如何select标准跟踪,Logger.NET,企业库,log4net或Ukadc.Diagnostics? 有一种比另一种更合适的情况吗? 那会是什么? (ASP.NET,控制台应用程序,Azure Cloud,SOHO,Enterprise …) 有什么好处或缺点? 我错过了其他主要的日志框架吗?

如何在log4net appender名称中使用GlobalContext属性?

我试图自定义一个log4net文件path来使用我在log4net.GlobalContext.Properties字典中设置的属性。 log4net.GlobalContext.Properties["LogPathModifier"] = "SomeValue"; 我可以看到,通过它进行debugging时,该值设置正确。 然后在我的configuration <file type="log4net.Util.PatternString" value="Logs\%appdomain_%property{LogPathModifier}.log" /> 但是,这样的输出给了我“_(null).log”在path的末尾。 是什么赋予了?

configurationlog4net根据级别向不同的appender发送错误

我想发送信息级别及以上的XML appender和错误/致命的级别EventLog appender。 我收集到,我需要修改configuration的根元素,但我正在努力的语法。 在指定的级别或级别范围内,将日志定向到正确的appender的configuration语法是什么? 这是迄今为止的configuration: <log4net> <appender name="SomeXmlAppender" type="log4net.Appender.RollingFileAppender"> … </appender> <appender name="SomeEventLogAppender" type="log4net.Appender.EventLogAppender"> … </appender> <root> <level value="DEBUG" /> <appender-ref ref="SomeXmlAppender" /> <appender-ref ref="SomeEventLogAppender" /> </root> </log4net> 编辑:感谢@agileguy。 那篇文章确实包含了我需要的syntaxt。 现在的工作解决scheme如下所示: <log4net> <appender name="SomeXmlAppender" type="log4net.Appender.RollingFileAppender"> … <evaluator type="log4net.Core.LevelEvaluator"> <threshold value="INFO"/> </evaluator> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="INFO" /> <acceptOnMatch value="true" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> </appender> […]

如何configurationlog4net以debugging模式打印到控制台

有没有办法将log4netconfiguration为在debugging期间将日志打印到控制台和文件? 我试图find一种方法,通过在发生日志时立即观察日志来高效地debugging我的软件。 写入文件对我来说是有问题的,因为我不想等到文件刷新到磁盘然后打开它。 所以我更喜欢把它写入控制台。 你有什么build议? 我添加了附加的app.config文件,但是我无法显示结果控制台。 以下是我的app.configconfiguration: <?xml version="1.0"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="WSHttpBinding_IProviderService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/> <security mode="Message"> <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/> <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default"/> […]

使log4net使用应用程序configuration文件作为configuration数据

我想将log4netconfiguration数据存储在我的application.config文件中。 根据我对文档的理解,我做了以下工作: 添加对log4net.dll的引用 在AssemblyInfo.cs中添加以下行: [assembly: log4net.Config.XmlConfigurator(Watch = true)] 初始化logging器如下: private static readonly ILog log = LogManager.GetLogger(typeof(frmWizard)); 我在我的app.config中有以下代码: <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" > <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" /> </layout> </appender> <root> <level value="INFO" /> <appender-ref ref="ConsoleAppender" /> </root> </log4net> 但是,当我运行该应用程序时,在控制台上出现以下错误: 没有find名为[Consoleappender]的appender。 我怎样才能让log4net从configuration文件中读取设置? 谢谢!

你可以从web.config文件中的其他地方拉一个log4net AdoNetAppender的connectionString?

我已经在我的web.config文件中有一个数据库连接string。 我扫描了log4net文档,但似乎无法find在我的web.config文件的log4net部分内使用它的方法。 是可以做这样的事情吗? <connectionStrings> <add name="connStr" connectionString="Data Source=localhost; …" /> </connectionStrings> <log4net> <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <connectionString connectionStringName="connStr"/> … </log4net>

在C#中获取log4net日志文件

这是我的log4net的configuration: <log4net> <appender name="MyLogger" type="log4net.Appender.RollingFileAppender"> <file value="MyLog.log" /> <appendToFile value="true" /> <rollingStyle value="Size"/> <maxSizeRollBackups value="20"/> <maximumFileSize value="1000KB"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss},%p,%m%n" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="MyLogger" /> </root> </log4net> 在C#中,我试图获取日志文件的名称(这是MyLog.log)。 我search了很多东西,但都没有这么做。 任何帮助? 谢谢!

跟踪与日志logging以及log4net如何适应?

我想知道什么是logging和跟踪之间的区别。 跟踪是不是更详细的日志,给开发人员一个工具来在运行时debugging应用程序的基本差异? 我一直在做log4net的testing。 现在我想知道是否应该跟踪,如果我可以/应该使用log4net的目的。 我应该跟踪log4net和log4netlogging器有一些跟踪级别? 我应该使用不同的日志级别进行debugging和追踪吗?还是可以使用相同的方法? 你能给我一个简单的例子,我将如何做一个简单的方法日志logging和追踪? 编辑:尽pipe下面几个有用的答案,我仍然不确定我应该如何跟踪与日志logging。 我在我的业务层有以下方法,我想添加日志/追踪到它。 我想知道如何有效地做到这一点。 在logging/追踪方面是否可接受以下方法? 日志消息应该是types信息而不是debugging? 我正在logging的debugging消息是否考虑跟踪? 你将如何改变它? IEnumerable<Car> GetCars() { try { logger.Debug("Getting cars"); IEnumerable<Car> cars = CarAccessor.GetCars().ConvertAll(DataAccessToBusinessConverter); logger.Debug("Got total of " + cars.Count + " cars"); } catch (Exception e) { logger.Error("Error when getting cars", e); throw new Exception("Unexpected error when getting cars"); } }