标签: log4net-configuration

Web.Config中的Log4Net部分生成错误

所以我试图在我的Web .NET 4.0应用程序中设置Log4Net.我已将正确的.dll添加到我的项目中,并将以下内容作为启动器添加到我的Web.Config文件中:

<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
</root>
</configSections>
 <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>
Run Code Online (Sandbox Code Playgroud)

但是,如果我将"log4net"部分附加到Web.Config,我将收到错误消息

无法在Web服务器上启动调试.有关常见配置问题请参阅帮助.....

确保服务器正常运行.验证web.config中没有语法错误........

注意 我可以删除本节的所有内部结构,只留下声明:

<log4net></log4net>
Run Code Online (Sandbox Code Playgroud)

我仍然会得到同样的错误.

有人可以给我一些关于如何追踪这个错误的指示吗?

log4net c#-4.0 log4net-configuration

8
推荐指数
2
解决办法
1万
查看次数

如何将AND log4net过滤器放在一起

我想创建一个仅针对特定级别记录的appender,仅针对特定记录器.从我所看到的,基于本教程,过滤器是ORed在一起.我如何和log4net一起过滤?这是我正在做的一个例子:

<appender name="MyAppender">
      <!--log only INFO level-->
      <filter type="log4net.Filter.LevelMatchFilter">
          <levelToMatch value="INFO" />
      </filter>

      <!--log only UserController logger-->
      <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="MyLogger" />
      </filter>

      <!-- do not log anything else -->
      <filter type="log4net.Filter.DenyAllFilter" />
</appender>
Run Code Online (Sandbox Code Playgroud)

logging log4net log4net-configuration log4net-filter

8
推荐指数
2
解决办法
1万
查看次数

log4net,这个配置是什么

log4net正在报告:

logger log4net找不到appender:Logger:请正确初始化log4net系统.

我有一个独立的log4net配置文件:

<!--?xml version="1.0"?-->
<configuration>
  <configsections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
  </configsections>
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="c:\temp\log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="5MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>


  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

..和这个应用程序启动代码

private static ILog logger;
protected void Application_Start(object sender, EventArgs e)
{
    ////This tells log4net where to go and look for its configuration file and also …
Run Code Online (Sandbox Code Playgroud)

log4net log4net-configuration

8
推荐指数
1
解决办法
6335
查看次数

如何使Log4Net发送一个电子邮件,其中From值设置为当前用户的电子邮件地址

Log4Net配置示例网页上,它显示了如何设置SmtpAppender的示例.

所以我将以下设置添加到我的app.config文件中,并在记录警告或更高时成功发送电子邮件(这很好).

<appender name="EmailAppender" type="log4net.Appender.SmtpAppender">
  <to value="me@mycompany.com" />
  <from value="me@mycompany.com" />
  <subject value="test logging message" />
  <smtpHost value="smtpserver.mycompany.com" />
  <lossy value="true" />
  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="WARN"/>
  </evaluator>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

但是From值是用我的电子邮件地址硬编码的.

我的应用程序是一个WinForms应用程序,它将部署到用户PC,因此知道哪个用户遇到警告/错误会非常方便.

是否可以设置Log4Net SmtpAppender以使From值使用当前用户的电子邮件地址?

谢谢您的帮助.

c# log4net log4net-configuration log4net-appender

8
推荐指数
3
解决办法
1万
查看次数

Log4Net单独的配置文件无法正常工作

我有一个奇怪的问题.我在解决方案中有多个项目.其中一个是WebAPI,它记录得很好.另一个是MVC管理站点,这个不会登录.这是我尝试过的.

我的日志代码:

var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.Info("Some log message");  
Run Code Online (Sandbox Code Playgroud)

在assemblyInfo中,我尝试了以下各项......

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "logging.config", Watch = true)]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "C:\\full_path\\logging.config", Watch = true)]  
Run Code Online (Sandbox Code Playgroud)

在Global.asax application_start中我尝试了以下(删除assemblyInfo行)

log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("Logging.config"));
var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.Info("Application starting");  
Run Code Online (Sandbox Code Playgroud)

这也不会创建日志.我可以创建一个的方法是使用global.asax中的代码和logging.config的完整路径.

我很困惑,因为webapi只使用只有相对路径的assemblyInfo.我还使用AssemblyInfo解决方案(相对路径)制作了带有MVC项目的示例虚拟解决方案,并且它也在那里工作.

有任何想法吗?

更新 - 发现问题

我必须在Application_Start中设置配置文件观察器:

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config"));
Run Code Online (Sandbox Code Playgroud)

事实证明,DotNetOpenAuth.Core.dll使用log4net,并且使用AssemblyInfo解决方案无法正常工作.我在这个博客中找到了详细信息:http://hanskindberg.wordpress.com/2013/04/07/log4net-configuration/

谢谢

c# log4net log4net-configuration asp.net-mvc-4

8
推荐指数
1
解决办法
9361
查看次数

在Log4Net中,XML配置优先级与Level相同吗?

我继承了一些代码,它在xml configuraiton的根目录下使用了priority元素.这就像http://iserialized.com/log4net-for-noobs/上的示例所示:

<root>
 <priority value="ALL" />
 <appender-ref ref="LogFileAppender" />
 <appender-ref ref="ConsoleAppender"/>
</root>
Run Code Online (Sandbox Code Playgroud)

但是,http: //logging.apache.org/log4net/release/manual/configuration.html上的log4net配置示例始终使用level元素显示它:

<root>
 <level value="DEBUG" />
 <appender-ref ref="A1" />
</root>
Run Code Online (Sandbox Code Playgroud)

在这种类型的配置是

<priority>
Run Code Online (Sandbox Code Playgroud)

同样的

<level>
Run Code Online (Sandbox Code Playgroud)

有人能指出我在解释这个问题的文档中的某个地方吗?

xml logging log4net log4net-configuration

8
推荐指数
1
解决办法
3578
查看次数

Log4net无法写入,只能创建空文件,但不能写入实际日志

我无法写日志任何信息,错误,使用log4net调试,我尝试了所有给网络服务的permsission,每个人到目录asp.net临时文件夹,日志文件夹,甚至c:\,

它只是创建一个空文件.但不要写日志

可能是什么问题

Thx Raj

log4net log4net-configuration

7
推荐指数
1
解决办法
1万
查看次数

log4net记录Debug.WriteLine和Console.WriteLine

由于这里的用户,我最近来到了log4net.无论如何,我想将每个Console.Write()和Debug.Write()自动记录到我配置的单个日志文件中.另外,我使用了许多类库,这些类也有对log4net一无所知的Console/Debug语句.这些也可以根据配置自动记录到日志文件中吗?这有可能吗?

我想要记录滚动日志文件:

Console.WriteLine("console statement");
Debug.WriteLine("debug statement");
Run Code Online (Sandbox Code Playgroud)

实例化记录器:

private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static void InitializeLogger()
{
    XmlConfigurator.Configure();
}
Run Code Online (Sandbox Code Playgroud)

整个app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="SubToolsPortServerTest.log"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="2" />
      <maximumFileSize value="1MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
      </layout>
    </appender>

    <root>
      <level value="ALL" />
      <appender-ref ref="LogFileAppender" />
    </root>
  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

.net log4net log4net-configuration

7
推荐指数
1
解决办法
4915
查看次数

Log4Net从日志中过滤出INFO,仅显示DEBUG&ERROR

有没有办法从日志中过滤出INFO,只显示DEBUG&ERROR,使用web.config中的配置?

<root>
<level value="DEBUG" />
<appender-ref ref="ColoredConsoleAppender" />
<appender-ref ref="RollingFileSystemAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
Run Code Online (Sandbox Code Playgroud)

log4net log4net-configuration log4net-filter log4net-appender

7
推荐指数
2
解决办法
3753
查看次数

为 .Net Core 3.1 应用程序配置 log4net 的最简单的正确方法

我正在努力理解配置 log4net 以在 .Net Core 3.1 应用程序中使用的最简单方法。该应用程序使用的是 log4net 2.0.8。所以:

有没有办法使用 application.runtimeconfig.json 文件来配置来做到这一点?如果是这样,我会向应用程序添加什么代码来告诉它使用这些设置 - 例如:

log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,那么添加配置文件(比如 log4net.xml)并告诉应用程序使用它的最简单方法是什么?

我想暂时将所有日志记录定向到一个文件,比如 Temp.log。我看过很多 log4net 页面,但他们要么谈论使用在新的 .Net Core 3.1 项目中不存在的 Assembly.Info.cs,要么似乎以编程方式设置了我想避免的 log4net 配置。我原以为这很容易,所以如果我错过了一个明显的方法,我深表歉意。

.net log4net log4net-configuration .net-core

7
推荐指数
1
解决办法
2万
查看次数