如何解决StreamWriter在新的一天不会更新其路径
| 我有一个程序正在写入名为\“ appname_yyyyMMdd.log \”的日志文件,其中appname是我的应用程序的名称,而yyyyMMdd是当前日期;样本日志文件名称可能是\“ loglistener_20110615.log \”。无论如何,我的应用程序会很好地创建日志文件,并按计划对其进行更新。但是,日期更改后,该应用程序将不会记录任何内容,也不会创建新文件。换句话说,由于今天是6/15,所以我需要它在今晚午夜之后创建一个名为\“ loglistener_20110616.log \”的文件,并且我需要它继续记录到该新文件。 以下是代码摘录:public static void LogInfo(string format,params object[] args)
{
lock (_logLock)
{
using (StreamWriter sw = File.AppendText(GetLogPath()))
{
sw.WriteLine(GetTimeStamp() + String.Format(format,args));
}
}
}
private static string GetLogPath()
{
string appName = \"loglistener\";
string today = DateTime.Today.ToString(\"yyyyMMdd\");
string fileName = appName + \"_\" + today + \".log\";
string fullLogPath = AppDomain.CurrentDomain.BaseDirectory + fileName;
return fullLogPath;
}
我检查了这个类似的问题,但是那个问题描述了一个不同的情况(具有不适用的修复程序)。
更新-以防万一Google员工登陆此页面,后来我发现了一个与此完全不同的原因。我的日志正在记录来自电子邮件监听服务的信息。该服务本身存在一个问题,即半小时后超时。因此,我的问题不是w / CreateText / AppendText ...我的问题是没有什么可记录的。很烦人,但我希望其他人不会被这个问题/答案所误导。
解决方法
您应该检查以确保该文件首先存在。
摘自
File.AppendText
文档
类型:System.IO.StreamWriter A
附加UTF-8的StreamWriter
编码文本到现有文件。
public static void LogInfo(string format,params object[] args)
{
lock (_logLock)
{
using (StreamWriter sw = File.Exists(GetLogPath) ? File.AppendText(GetLogPath()) : File.CreateText(GetLogPath())
{
sw.WriteLine(GetTimeStamp() + String.Format(format,args));
}
}
}
试试看
在查看注释并重新阅读文档之后。
File.AppendText
无论文件是否存在,都应始终工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。