相关疑难解决方法(0)

如何为log4net指定常用的应用程序数据文件夹?

我希望log4net将日志文件(使用RollingFileAppender)写入公共应用程序数据文件夹的子文件夹(例如C:\ Documents and Settings\All Users\Application Data\Company\Product\Logs).
但是,在Win XP上,没有指定此文件夹的环境变量.我们有%ALLUSERSPROFILE%,%APPDATA%但没有什么比这更好的了%ALLUSERSAPPDATA%.
以编程方式,我可以使用Environment.SpecialFolder.CommonApplicationData,但我需要将它放在log4net配置中,如下所示:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
   <file value="%ALLUSERSAPPDATA%\Company\Product\Logs\error.log" />
</appender>
Run Code Online (Sandbox Code Playgroud)

好的,我们可以在我们的设置中定义这个,但也许有人提出了一个更好的主意?

logging log4net environment-variables

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

滚动Log4Net日志文件中的自定义文件名?

我们有一个ASP .Net应用程序,我们使用Log4Net来记录应用程序中的详细信息 - 没有新内容 - 滚动日志文件名的格式通常为:

rolling-log.txt 
rolling-log.txt.1
rolling-log.txt.2 etc.
Run Code Online (Sandbox Code Playgroud)

应用程序的每个用户都添加到日志文件中,对于特定用户的情况,日志文件可能难以阅读,因此,我们希望以某种方式修改配置文件以单独记录用户的日志详细信息,每次写入特定文件,例如

<applicationId>rolling-log.txt
<applicationId>rolling-log.txt.1
<applicationId>rolling-log.txt.2
etc.
Run Code Online (Sandbox Code Playgroud)

每个用户的唯一应用程序ID在哪里,由五位数字组成,例如

12345rolling-log.txt
Run Code Online (Sandbox Code Playgroud)

关于实现这个的最佳方法的任何想法,假设它是可能的?

干杯

布雷特

asp.net log4net

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

记录多实例应用程序的最佳实践?

我终于尝试了我的WPF桌面应用程序的log4net.

我正在努力解决RollingFileAppender没有内置支持多实例应用程序的事实.

我不喜欢将应用程序限制为单个实例只是为了让logger满意.单一的手术技巧都是丑陋的黑客.

在日志文件的文件名中使用进程ID也不够好.这有可能占用无限空间,因为RollingFileAppender在这种情况下是无用的.

一种解决方案可能是将日志发送到不同的进程,这将负责将输出序列化为文件.但这会带来新的麻烦.

你对此有何看法?

.net c# log4net multiple-instances

15
推荐指数
1
解决办法
8116
查看次数

从第三方重定向log4net日志

我有第三方使用如下所示的配置文件:

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

  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value=".\logs\logclient.txt" />
      <appendToFile value="false" />
      <rollingStyle value="Date" />
      <maximumFileSize value="1000KB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date  [%thread] %-5level %logger [%ndc] - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingFileAppender" />
    </root>
  </log4net>

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

第三方中的代码如下所示:

LogManager.GetRepository(Assembly.GetCallingAssembly()), configFile);

LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Run Code Online (Sandbox Code Playgroud)

我希望第三方dll使用我自己的配置文件中定义的自己的appender.我该如何管理这个?

NB:

  • 第三方需要使用自己的配置文件,因为其他部分是必需的,我不能将它们添加到我的文件中
  • 我可以修改第三方配置文件,我无法修改我的

c# log4net

15
推荐指数
1
解决办法
967
查看次数

C#Log4Net - 以编程方式动态更改日志目录

我阅读了有关以编程方式更改日志目录的大多数相关主题,但答案有点高级.

我的问题是尝试动态更改从我的C#应用​​程序保存日志文件的位置.我有一个带有浏览按钮的文本框,可以选择保存的位置.

任何人都有想法或者可以用一些代码指出我正确的方向?我尝试过类似的想法,但似乎无法做到正确.

c# directory configuration logging log4net

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

将变量添加到 Log4Net 中滚动文件附加程序的文件名

有没有办法使 fileAppender 变量的名称?即当我在我的控制器上调用一个带有对象的操作时,我想将其写入日志文件。该文件的名称类似于:yyyyMMdd_hhmssms_[controller]_[method].json

这是我的配置文件中的内容:

<appender name="JsonFileAppender" type="log4net.Appender.RollingFileAppender" >
  <file value="c:\temp\" />
  <datePattern value="yyyyMMdd_hh.mm.ss.ms_%thread{CommonApplicationData}'.json'" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

这将返回以下文件名:20160224_01.30.28.3028_P1rea24{Co30onApplicPionDaPa}.json

c# logging log4net log4net-appender

0
推荐指数
1
解决办法
2018
查看次数