C# 是否可以在日志文件中插入自定义行作为第一行?

C# 是否可以在日志文件中插入自定义行作为第一行?,c#,.net,log4net,C#,.net,Log4net,我已经为web服务应用程序创建了一个自定义日志文件,我们希望在其中记录处理请求的时间。我们希望这是一个.csv格式,因为它会使它更容易阅读 我已经成功地配置了一个appender,在这里我自定义了日志输出,所以它只输出日期和以逗号分隔的消息 <log4net> <appender name="TimingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value=".

我已经为web服务应用程序创建了一个自定义日志文件,我们希望在其中记录处理请求的时间。我们希望这是一个.csv格式,因为它会使它更容易阅读

我已经成功地配置了一个appender,在这里我自定义了日志输出,所以它只输出日期和以逗号分隔的消息

<log4net>
<appender name="TimingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value=".\\App_Data\\Logs\\" />
      <datePattern value="'GetInstallationsTiming.log_'yyyy-MM-dd'.txt'" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <appendToFile value="true" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout, log4net">
        <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss},%message%newline" />
      </layout>
    </appender>
<logger name="GetInstallationsTimingLog" addivity="false">
      <level value="All"></level>
      <appender-ref ref="TimingLogFileAppender" />
    </logger>
  </log4net>


我想知道是否有可能将自定义行作为第一行,这基本上是标题,因此类似于日期、时间(毫秒)、联系电子邮件、对象数?

如果您使用自定义行,您可以这样写:

  public static void Logger(string lines)
    {
        string path = "C:/Log/";
        VerifyYourPath(path);
        string fileName = DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() +
       DateTime.Now.Year.ToString() + "_Logs.txt";
        if (Exist(fileName))// Check you already have this file or not
        {
            // add the new lines to exisiting file
        }
        else
        {
            try
            {
                System.IO.StreamWriter file = new System.IO.StreamWriter(path + fileName, true);
                var title = DateTime.Now.ToString()/*What you want*/;
                file.WriteLine(title + ": " + lines);
                file.Close();
            }
            catch (Exception) { }
        }
    }

您可以添加所需内容,而不是DateTime.Now.toString()。如果需要,还可以检查它是否为第一行。

您是否使用标准的RollingFileAppender(log4net.Appender.RollingFileAppender)。您说“CustomAppender”,这可能意味着您编写了一种新类型的appender

标准RollingFileAppender可以配置如下标题:

<layout type="log4net.Layout.PatternLayout">
​    <header type="log4net.Util.PatternString" value="%newlineLOG START- %env{COMPUTERNAME} - %appdomain - UTC Time: %utcdate Local time: %date %newlineNOTE: All events are logged using UTC time.%newline"/>
这将在每次应用程序启动时向日志中添加以下行:

日志开始-MyComputer-MyApp.exe-UTC时间:2019-08-05 12:07:26641 当地时间:2019-08-05 14:07:26643
注意:所有事件都使用UTC时间记录


每次日志记录开始时都会添加标题文本,而不仅仅是在顶部添加一次,因此这可能不是您想要的。

您使用的是哪种日志记录程序?我是说您使用什么进行日志记录?我使用log4net进行日志记录。您是否使用标准的RollingFileAppender(log4net.Appender.RollingFileAppender)。您说“自定义appender”,这可能意味着您编写了一种新类型的appender。@WulfgarDK如果您使用log$net,您可以通过设置来完成此操作。但正如我在下面编码的那样,你也可以很容易地做到。你看过我的答案了吗?那看起来正是我需要的。是的,我确实在使用RollingFileAppender,我不知道为什么我的配置的前几行在我的帖子中被删掉了,我明天回去工作时会编辑它。我的下一个问题可能是,当应用程序启动时,即使在同一天发生两次,也不可能启动新日志?请尝试RollingStyle=one,为每次程序执行获取一个新文件。见: