我想使用全局日志文件。我宣称它是:
string logName = "ProcessingLog.txt";
FileLogger fLogger;
static this()
{
fLogger = new FileLogger(logName);
}
void main()
{
if (someCondition)
remove(logName);
}
但是在main
中我想重新创建它(删除旧的并创建新的),但是由于当前日志被阻止,我无法调用函数removeOldLog();
的问题通过运行应用程序。
删除main中的日志是由同一进程阻止的。我试图在每个产生日志的函数之前移动fLogger = new FileLogger(logName);
,但是在它写入期间我遇到了运行时错误。所以FileLogger
似乎应该是全局初始化的。
这样做的正确方法是什么?
答案 0 :(得分:0)
您应该自己打开文件并将其作为参数传递:
auto file = File("logFile.log", "w");
auto log = new FileLogger(file);
if (some condition)
{
file.close;
remove(file.name);
}
但请注意,如果文件被关闭,使用FileLogger进行日志记录将导致未定义的行为。