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