嘿,我在web.config中有这个配置
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="mylog.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="" />
<param name="Footer" value="" />
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n" />
<param name="Footer" value="[Footer]\r\n" />
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
但log4net无法正常工作.我的项目编译得很好,我也没有调试错误.我告诉的行log.debug("somemessage")可以正常运行,但我找不到mylog.log文件,所以它在哪里?
我希望我的日志文件看起来像这样: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>
Run Code Online (Sandbox Code Playgroud) 我有这个代码和下面的配置文件:
ILog log = LogManager.GetLogger(typeof(MyClass));
log.Debug("Testing");
Run Code Online (Sandbox Code Playgroud)
TestProj目录未创建,如果我创建它,没有TestLog.txt文件,没有日志......没有.
任何的想法?
谢谢,
配置文件
<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" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud) 我有一个程序,可以对"myprogram"记录器进行许多log4net调用.它还调用其他代码,使log4net调用其他记录器.我想为"myprogram"捕获高于INFO的所有日志,并为其他所有内容捕获高于WARN的所有日志.这样,我就可以获得特定于我正在处理的任务的正在进行的工作消息,但仍然会通知支持代码中发生的潜在不良事件.我希望将其发送到Console和日志文件.
我有以下log4net配置:
<log4net>
<root>
<level value="WARN" />
<appender-ref ref="Console" />
<appender-ref ref="LogFile" />
</root>
<logger name="myprogram">
<level value="INFO" />
<appender-ref ref="Console" />
<appender-ref ref="LogFile" />
</logger>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
<threshold value="INFO" />
</appender>
<appender name="LogFile" type="log4net.Appender.RollingFileAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="- %utcdate %level %logger %ndc %thread %message%newline" />
</layout>
<appendToFile value="false" />
<staticLogFileName value="true" />
<rollingStyle value="Once" />
<file value="mylogfile" />
<immediateFlush value="true" />
<threshold value="INFO" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
这对我来说非常有意义:log> WARN for …
如何使Log4net仅记录信息级别日志?这甚至可能吗?你能设定一个门槛吗?
这就是我所拥有的,它会像我期望的那样记录Info及以上.有什么我可以做它只有日志信息?
<logger name="BrokerCollection.Model.XmlDocumentCreationTask">
<appender-ref ref="SubmissionAppender"/>
<level value="Info" />
</logger>
Run Code Online (Sandbox Code Playgroud) 这是我对log4net的配置:
<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>
Run Code Online (Sandbox Code Playgroud)
在C#中,我试图获取日志文件的名称(即MyLog.log).我用Google搜索并尝试了很多东西,但未能这样做.有帮助吗?
谢谢!
有没有办法配置log4net以在调试期间将日志打印到控制台和文件?
我试图通过在日志发生时立即观察日志来找到一种有效调试软件的方法.
写入文件对我来说是有问题的,因为我不想等到文件被刷新到磁盘然后打开它.
因此我更喜欢它写入控制台.
你有什么建议?
我添加了app.config附加附加的文件,但我无法显示结果控制台.
以下是我的app.config配置:
<?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"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8081/AP2" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IProviderService" contract="IProviderService" name="WSHttpBinding_IProviderService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</client>
</system.serviceModel>
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> …Run Code Online (Sandbox Code Playgroud) 我想在我的application.config文件中存储log4net配置数据.根据我对文档的理解,我做了以下工作:
添加对log4net.dll的引用
在AssemblyInfo.cs中添加以下行:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)按如下方式初始化记录器:
private static readonly ILog log = LogManager.GetLogger(typeof(frmWizard));
Run Code Online (Sandbox Code Playgroud)我的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>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行该应用程序时,我在控制台上收到以下错误:
没有找到名为[Consoleappender]的追加器.
如何让log4net从配置文件中读取设置?
谢谢!
我想将Info Level&above发送到XML appender和Error/Fatal Level到EventLog appender.
我认为我需要修改配置的根元素,但我正在努力学习语法.对于给定级别或级别的级别,将日志定向到正确的appender的配置语法是什么?
到目前为止这是配置:
<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>
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢@agileguy.该帖确实包含了我需要的合成语.工作解决方案现在看起来像这样:
<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>
<appender name="SomeEventLogAppender" type="log4net.Appender.EventLogAppender">
...
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR"/>
</evaluator>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<root>
<level value="DEBUG" /> …Run Code Online (Sandbox Code Playgroud) 这是我的App.Config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="lang" value="English"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
使用此代码,我进行了更改
lang = "Russian";
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
System.Configuration.ConfigurationManager.AppSettings.Set("lang", lang);
}
Run Code Online (Sandbox Code Playgroud)
但它没有改变.我做错了什么?