相关疑难解决方法(0)

您可以在代码中配置log4net而不是使用配置文件吗?

我理解为什么log4net使用app.config文件来设置日志记录 - 这样您就可以轻松更改信息的记录方式,而无需重新编译代码.但在我的情况下,我不想app.config用我的可执行文件打包文件.我不想修改我的日志记录设置.

有没有办法让我设置登录代码而不是使用app.config

这是我的简单配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\EventLog.txt" />
      <appendToFile value="false" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="1GB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
    </appender>
    <root>
      <level value="Info" />
      <appender-ref ref="RollingLogFileAppender" />
      <appender-ref ref="MemoryAppender" />
    </root>
  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

编辑:

要完全清楚:我的目标是没有XML文件.甚至不是我变成流的嵌入式资源.我的目标是完全以编程方式定义记录器.只是好奇是否有可能,如果是这样,我可能会找到一个语法示例.

.net c# logging log4net

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

动态设置appender文件路径的最佳方法

我试图找到比我聪明的人来验证我写的一些语法.我的想法是将RollingFileAppender的文件名配置为程序集的名称,以使其更适用于我的项目.

我已经看过这篇以前的SO文章,但它并不完全能够回答我的问题......

我有一段时间试图理解Log4net的内部组件,这就是我提出的(驻留在Global.asax文件中 - Application_Start方法):

// Bind to the root hierarchy of log4net
log4net.Repository.Hierarchy.Hierarchy root = 
  log4net.LogManager.GetRepository() 
    as log4net.Repository.Hierarchy.Hierarchy;

if (root != null)
{
  // Bind to the RollingFileAppender
  log4net.Appender.RollingFileAppender rfa = 
    (log4net.Appender.RollingFileAppender)root.Root.GetAppender("RollingLogFileAppender");

  if (rfa != null)
  {
    // Set the file name based on the assembly name
    string filePath = 
      string.Format("~/App_Data/{0}.log", GetType().Assembly.GetName().Name);

    // Assign the value to the appender
    rfa.File = Server.MapPath(filePath);

    // Apply changes to the appender
    rfa.ActivateOptions();
  }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我,"这很可怕",或者"这应该可以正常工作"?另外,如果我动态设置文件,我仍然可以期望log4net行为根据log4net.config文件设置旋转文件吗?

非常感激!

c# log4net

37
推荐指数
3
解决办法
6万
查看次数

c#创建日志文件的最佳方法

我正在编写一个工具,它将检查整个网络中工作站的运行状况,并根据发现的问题进行修复.我想创建一个日志文件,因为应用程序正在运行每台计算机上的任务/检查.我现在只想让它在一台机器上运行,但是它会一次扫描100多台机器(螺纹外出).

创建日志文件的最佳方法是什么?

我正在考虑使用a List<string>在内存中构建日志文件,然后在完成后将其输出到文件中.

我只是觉得可能有更好的方法吗?

c# logging file

32
推荐指数
5
解决办法
9万
查看次数

Log4net随机停止记录.

我目前正在使用log4net构建一个ASP.Net-MVC应用程序进行日志记录,但是记录器似乎只是随机停止.它会愉快地记录一段时间,然后停止,然后在一段时间后再次启动.我甚至不确定是什么让它恢复记录.我不是在谈论丢失的一些消息 - 有时它会消失很长一段时间,比如一个小时左右.

为什么会这样停下来开始?我应该如何正确配置它,以便它不会随意停止?

这是我的配置:

<log4net debug="true">
<appender name="RollingLogFileAppender"
        type="log4net.Appender.RollingFileAppender">

  <file value="..\Logs\\CurrentLog.txt" />
  <appendToFile value="true" />
  <datePattern value="yyyyMMdd" />

  <rollingStyle value="Date" />
  <filter type="log4net.Filter.LevelRangeFilter">
    <acceptOnMatch value="true" />

    <levelMin value="INFO" />
    <levelMax value="FATAL" />
  </filter>

  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern
    value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
  </layout>

</appender>

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

log4net

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

使用Log4Net以编程方式强制新的日志文件

注意:我读了这个问题和答案,它不适用于我想要的东西:Log4Net:以编程方式指定多个记录器(具有多个文件追加器)

我有一个WCF服务,这是一个"问答"式服务.它获得输入并发送输出.它根本不存在.

我需要在单独的文件中记录每个问答环节.

我有一个Appender(目前是RollingAppender).

有没有办法为每次调用我的WCF服务启动一个新的日志文件?

注意:我使用的是XML Layout,其想法是可以解析日志的输出并以图形方式显示(稍后的功能).有点像"查询计划".这是我在一个单独的文件中需要它们的另一个原因.

注意:如果需要其他原因,Log4Net XmlLayoutBase将不会删除xml页脚,直到应用程序关闭.这不是IIS中托管的WCF服务的计划事件.

.net logging log4net

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

为每个appender创建不同的log4net.ILog实例

我正在使用log4net来记录项目.

我想登录3个不同的文件:请求,响应和错误.

<log4net debug="true">
    <!--To turn off an appender, simply set it's threshold value to "OFF"-->
    <appender type="log4net.Appender.RollingFileAppender" name="RequestAppender">
        <file value="requests.txt" />
        <threshold value="INFO" />
        <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>

    <appender type="log4net.Appender.RollingFileAppender" name="ResponseAppender">
        <file value="responses.txt" />
        <threshold value="INFO" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="10MB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net log4net appender

5
推荐指数
1
解决办法
6885
查看次数

以编程方式将Nhibernate设置为降低log4net的日志记录级别

我有一个应用程序,它登录到log4net,但也使用Nhibernate.我的应用程序同时配置NHibernate的(使用功能NHibernate配置)和log4net的(使用BasicConfigurator)编程.

问题是我的日志充满了Nhibernate日志信息,我不需要99.9%的时间而且应用程序因Nhibernate的完整日志记录而变慢.

如何配置Nihbernate不进行任何日志记录或log4Net以编程方式忽略所有Nhibernate记录器?我知道你可以使用xml配置文件来完成它,但这对我来说不是一个选择.

任何帮助将非常感激.

log4net fluent-nhibernate nhibernate-3 c#-4.0

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