小编Phi*_*p M的帖子

每个命名空间不同的appender

我正在尝试建立一个公共日志库,它ILog根据当前堆栈确定实例,以及使用ILog的最佳实例.

我的配置设置如下:

<log4net>
  <!-- appenders omitted -->
  <root></root>

  <logger name="MyAssembly.MyNamespace">
    <level value="WARN" />
    <!-- appender list -->
  </logger>
</log4net>
Run Code Online (Sandbox Code Playgroud)

我有一个这样的课:

namespace MyAssembly.MyNamespace.SubNamespace {
  public class MyClass { ... } 
}
Run Code Online (Sandbox Code Playgroud)

当我尝试获取ILog我传入type(var log = LogManager.GetLogger(typeof(MyClass)).Namespace);)的实例时,我希望它检测到没有配置任何记录器,因此它将在命名空间树(to MyAssembly.MyNamespace)中上升一级,然后查看是否在那一点配置.

问题是ILog返回的for MyAssembly.MyNamespace.SubNamespace配置为WARN事件(及以上),基本上是我为它的父配置.ILog当所需名称包含已定义的名称时,Log4net似乎正在返回,而不是等于名称时.

当名称与配置中定义的名称相同时,如何让Log4net仅返回有效的记录器?

log4net

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

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万
查看次数

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的AdoNetAppender时如何指定常量参数

http://logging.apache.org/log4net/release/config-examples.html

给出这里的日志表:

CREATE TABLE [dbo].[Log] (
    [Id] [int] IDENTITY (1, 1) NOT NULL,
    [Date] [datetime] NOT NULL,
    [Thread] [varchar] (255) NOT NULL,
    [Level] [varchar] (50) NOT NULL,
    [Logger] [varchar] (255) NOT NULL,
    [Message] [varchar] (4000) NOT NULL,
    [Exception] [varchar] (2000) NULL,

    [Product] [varchar] 100 not null
)
Run Code Online (Sandbox Code Playgroud)

和appender配置在这里:

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <bufferSize value="100" />
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" />
    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception], [Product]) VALUES (@log_date, …
Run Code Online (Sandbox Code Playgroud)

log4net adonetappender

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

正在创建log4net日志但仍为空

我正在尝试使用log4net.当我启动应用程序时,它会创建日志文件,但无论我调用Log.Info("Application Started");它多少次都是空的.我研究了google返回的前两页,我的代码似乎与所有示例相匹配.

码:

[assembly: XmlConfigurator(Watch = true)]

namespace Generator
{
     public class Run
     {

       private static readonly log4net.ILog Log =
       log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

        public List<BILL_RUN> PerformBillRun()
        {
             XmlConfigurator.Configure();

             Log.Info("Application Started");
             var enabled = Log.IsInfoEnabled; //This is true
        }

     }

}
Run Code Online (Sandbox Code Playgroud)

的app.config

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="log-files.txt" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <root>
      <level value="All" />
      <appender-ref ref="FileAppender" />
    </root> …
Run Code Online (Sandbox Code Playgroud)

.net c# log4net winforms

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

用于WebEmail的Log4Net SmtpAppender - 不发送

我正在努力让Log4Net使用Yahoo或Gmail等网络电子邮件.如果你有这个工作,我会感谢一些帮助,并提前感谢.

我有一个默认的根记录器,带有RollingFileAppender和一个SmtpAppender.文件追加器工作正常.SmtpAppender什么都没给我.

我从诊断按钮单击调用记录器...

protected void btnReloadContractConfig_Click(object sender, EventArgs e)
{
    // DIAGNOSTIC - Test email logger
    log4net.ILog logger = log4net.LogManager.GetLogger("root");
    logger.Error("btnReloadContractConfig_Click() - This is a TEST of delivery of error messages via email, triggered from the Admin.aspx.cs code file.");
}
Run Code Online (Sandbox Code Playgroud)

...而RollingFileAppender正在收到消息......

LOC = 20120921-12:03:16.319,UTC = 20120921-11:03:16.319,DELTA = 10078,THR = 6,ERROR,LOG = root,[(null)] - btnReloadContractConfig_Click() - 这是交付测试通过电子邮件发送的错误消息,从Admin.aspx.cs代码文件触发.

Log4Net的web.config条目在这里::

  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>        
  <appSettings>


  <log4net 
    xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
      <appender-ref ref="SmtpAppender" />
    </root>

    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file …
Run Code Online (Sandbox Code Playgroud)

log4net smtpappender

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

Log4Net是否有一个支持TLS加密的smtp appender?

正如标题中所述,我遇到了一些问题,发现一个appender声明它支持TLS加密标准.

我一直在尝试使用SmtpAppender,但无法让它工作,并怀疑它与需要TLS加密的smtp服务器有关,而且SmtpAppender可能不支持这一点.

从Office365手册设置

手册

使用的配置:

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
  <to value="my email" />
  <from value="The senders email" />
  <Username value="JohnDoe"></Username>
  <password value="NoWay" ></password>
  <authentication value="Basic"></authentication>
  <subject value="Test message" />
  <smtpHost value="pod51011.outlook.com" />
  <port value="587" />
  <bufferSize value="512" />
  <lossy value="true" />
  <EnableSsl value="true"/>
  <evaluator type="log4net.Core.LevelEvaluator">
      <threshold value="INFO"/>
  </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)

ssl log4net

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

如何使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万
查看次数

在其中一个属性中获取具有最大日期时间值的对象

当我想要检索与一个最高值的对象DateTime从属性IEnumerable,我可以做到以下几点:

var maxDate = myEnumerable.Max(x => x.TheDateTimeProperty);
var wantedObject = myEnumerable.FirstOrDefault(x => x.TheDateTimeProperty == maxDate);
Run Code Online (Sandbox Code Playgroud)

这可能没有获得第maxDate一个吗?例如这样:

var wantedObject = myEnumerable.GetByMaxDate(x => x.TheDateTimeProperty);
Run Code Online (Sandbox Code Playgroud)

我知道我可以写一个扩展方法GetByMaxDate,但我想知道linq是否已经提供了一个方法.

只是为了澄清:没有寻找其他可能来写这个.如果存在一种方法,我只是感兴趣.(代码少,代码管理的最佳性能)

c# linq

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

Log4net不写入文件

我想添加新的日志到文件.这是我的appender:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="mylogfile.txt"/>
  <appendToFile value="true"/>
  <rollingStyle value="Size"/>
  <maxSizeRollBackups value="5"/>
  <maximumFileSize value="10MB"/>
  <staticLogFileName value="true"/>
  <filter type="log4net.Filter.StringMatchFilter">
    <stringToMatch value="test"/>
  </filter>
  <filter type="log4net.Filter.StringMatchFilter">
    <stringToMatch value="error"/>
  </filter>
  <filter type="log4net.Filter.DenyAllFilter"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/>
  </layout>
</appender>
<root>
  <level value="All"/>
  <appender-ref ref="RollingFileAppender"/>
</root>
Run Code Online (Sandbox Code Playgroud)

在我的班上,我补充道

[assembly: XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)

我添加访问该文件的所有人但是:log4net不写入文件.为什么?

c# log4net

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