小编Phi*_*p M的帖子

Log4Net不记录或错误

我一直试图在我的asp.net Web应用程序中记录log4net,但没有成功或任何明显的错误.我试图使用ADONetAppender appender与以下配置:

<log4net>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
  <bufferSize value="1" />
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="server=" />
  <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[Context]) VALUES 
                            (@log_date, @thread, @log_level, @logger, @message, @exception, @context)" />
  <parameter>
    <parameterName value="@log_date" />
    <dbType value="DateTime" />
    <layout type="log4net.Layout.RawTimeStampLayout" />
  </parameter>
  <parameter>
    <parameterName value="@thread" />
    <dbType value="String" />
    <size value="32" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%t" />
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@log_level" />
    <dbType value="String" />
    <size value="512" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%p" />
    </layout>
  </parameter>
  <parameter> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net log4net

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

log4net无法在Windows服务中运行

我有一个控制台应用程序,我正在转换为Windows服务.作为控制台应用程序,我的log4net日志记录工作正常.但是将它转换为Windows服务,我的log4net日志记录已停止工作.

我已将此添加到服务项目中的assemblyInfo.cs中:

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

这是我的onstart和onstop服务类:

private static log4net.ILog _log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        private Builder _builder;

        public YCSWebServerService()
        {
            InitializeComponent();
            _builder = new Builder();
        }

        protected override void OnStart(string[] args)
        {
            _log.Info("YCSWebServerService started");
            _builder.Start();
        }

        protected override void OnStop()
        {
            _log.Info("YCSWebServerService stopped");
            _builder.Stop();
        }
Run Code Online (Sandbox Code Playgroud)

我有一个"特定的"log4net配置文件添加到我的服务项目:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

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

  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="EventLogAppender" />
    </root>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <threshold value="DEBUG" />
      <applicationName value="Lantic YCS WebServer" /> …
Run Code Online (Sandbox Code Playgroud)

c# logging windows-services

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

log4net MemoryAppender无法正常工作

我正在使用log4net登录我的应用程序.我的FileAppender工作正常,但我遇到MemoryAppender问题.

这是我的配置文件.

<?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.FileAppender">
  <param name="File" value="Envision.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="MemoryAppender" type="log4net.Appender.MemoryAppender">

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

我使用此代码来设置配置文件.

FileInfo file = new FileInfo(configPath);
log4net.Config.XmlConfigurator.Configure(file);
file = null;
Run Code Online (Sandbox Code Playgroud)

就像我说的,FileAppender效果很好.但我似乎无法得到任何事件.我试过用这样的东西来获取MemoryAppender.

Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
MemoryAppender …
Run Code Online (Sandbox Code Playgroud)

log4net appender

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

每种方法不同的appender

刚开始使用log4net并试图了解配置和记录器层次结构.此层次结构是基于名称空间还是类和方法/函数层次结构?

可以说我有以下类结构......

public class MyClass
{
  private static readonly ILog log = LogManager.GetLogger(typeof(MyClass));

  public void Method1()
  {
    log4net.info("message");
  }

  public void Method2()
  {
    log4net.info("message");
  }

}
Run Code Online (Sandbox Code Playgroud)

是否可以在配置中为method1中的log4net.info设置使用一个appender和方法2中的log4net.info来使用另一个appender,即使它们不属于同一类型,例如SmtpAppender.如果是这样,配置看起来如何.这是我的第一次尝试.

<appender name="SMTP1" type="log4net.Appender.SMTPAppender">
</appender>
<appender name="SMTP2" type="log4net.Appender.SMTPAppender">
</appender>


<logger name="MyClass.Method1">
    <level value="INFO" />
    <appender-ref ref="SMTP1" />
</logger>
<logger name="MyClass.Method2">
    <level value="INFO" />
    <appender-ref ref="SMTP2" />
</logger>
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net logging log4net

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

如何以编程方式获取log4net日志文件的名称模式?

我正在尝试编写一个C#代码,它通过log4net API 在运行时检索log4net日志文件的名称模式.

也就是说,如果在log4net.config中定义了以下appender:

<appender name="MyAppender" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="%date{yyyy}\%date{MM}\%date{dd}\%property{Id}.log" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="16" />
  <maximumFileSize value="1MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

我想在代码中的字符串变量中获取%date {yyyy} \%date {MM} \%date {dd} \%property {Id} .log(不将log4net.config解析为纯XML).

有没有人有想法来拉这个伎俩?

先感谢您.

c# log4net

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

Quartz.Net - 使用log4net进行常规日志记录

我正在尝试实现Quartz.Net.只要没有配置日志记录一切正常(调试输出显示"找不到配置部分 - 抑制日志输出").

启用日志记录后,我将收到以下错误:无法从配置部分"common/logging"获取Common.Logging的配置.

内部异常:为common/logging创建配置节处理程序时发生错误:无法创建类型'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4net'

我用了几个资源,这其中以varify我的配置,但据我看到它应该是正确的.

我的app.config:

  <configSections>
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
        <arg key="configType" value="INLINE" />
      </factoryAdapter>
    </logging>
  </common>  
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-6p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
  <quartz>
    <add key="quartz.scheduler.instanceName" value="Driver.Service.Scheduler" />
    <add …
Run Code Online (Sandbox Code Playgroud)

c# log4net log4net-configuration common.logging quartz.net-2.0

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

log4Net日志文件没有写入

我正在尝试在我的asp.net Web应用程序中实现log4net.但不幸的是,文件未创建.以下是我的配置.

1.添加了log4net .dll参考

2.Web.config设置.

  <configSections>
    <section name="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="E:/Log/error_%date{dd-MM-yyyy}.log"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <!--<maxSizeRollBackups value="5"/>
      <maximumFileSize value="10MB"/>
      <staticLogFileName value="true"/>-->
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception%newline%newline"/>
      </layout>
    </appender>
    <root>
      <appender-ref ref="RollingFileAppender"/>
    </root>

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

3.添加了组件参考

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

4.记录后面的代码

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

try
{
    throw new System.IO.FileNotFoundException();
}
catch (Exception ex)
{     
    log.Error("Error error logging", ex);       
}
Run Code Online (Sandbox Code Playgroud)

这些是我遵循的步骤,但是没有创建日志......

请提出你的建议.

提前致谢

c# asp.net logging log4net

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

如何在Windows XP和7上配置log4net以写入%LOCALAPPDATA%?

我有一个使用log4net进行日志记录的内部应用程序.我想要生成日志%LOCALAPPDATA%\Vendor\App\application.log.不幸的是,log4net正在创建日志文件%APPDATA%.这不是一个大问题,因为我们真的不在这里使用漫游配置文件,但我不喜欢在我的代码中留下一点特质,如果我可以避免它.

有关如何将文件写入我指定的位置而不用编程配置log4net并使用pinvoke获取XP路径的任何想法?

如果有任何帮助,这是我的配置文件的appender部分:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="${LOCALAPPDATA}\Vendor\App\application.log" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="100KB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger%newline%message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

log4net environment-variables

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

部署时Log4Net不记录

使用版本1.2.11.日志记录在我的开发机器上运行,但在部署时不会创建目录或日志.

我试过了:

  • 提供对IUSR,Everyone,本地用户的完整目录访问权限.
  • 将应用程序池作为本地管理员帐户运行.
  • Phil Haack所述,使用内部调试.

每次更改后停止并启动应用程序池.

输出文件中没有生成任何内容.

我的log4Net配置如下.关于下一步该尝试的任何想法?

<?xml version="1.0"?>
<log4net debug="true">
  <appender name="file" type="log4net.Appender.RollingFileAppender">
    <file value="..\Logging\log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="1MB" />
    <threshold value="DEBUG" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>
  <appender name="console" type="log4net.Appender.DebugAppender">
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="file" />
    <appender-ref …
Run Code Online (Sandbox Code Playgroud)

.net c# log4net

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

有没有办法将旧的日志文件从log4net RollingLogFileAppender移动到另一个文件夹?

我有一个滚动文件appender配置如下:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="appname" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <datePattern value="'.'yyyyMMdd'.log'" />
  <maxSizeRollBackups value="30" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想知道是否有办法将旧的日志文件移动到"存档"文件夹,而不是将它们移动到同一个文件夹?

.net c# log4net

6
推荐指数
1
解决办法
1090
查看次数