c# - .NET 日志记录类不写

标签 c# .net logging iostream streamwriter

我刚刚根据我在 MSDN 和其他一些网站上找到的示例编写了一个简单的日志记录类,供在各种线程之间使用。问题是,它创建了文件日志文件,但实际上从未向其中写入任何内容(尽管它会正确写入控制台)。

public class Logger
{
    private static Logger instance;
    private Logger() { }
    private static StreamWriter writer;

    public static Logger GetInstance()
    {
        lock (typeof(Logger))
        {
            if (instance == null)
            {
                instance = new Logger();
            }

            return instance;
        }
    }

    public void OpenFile(String file)
    {
        // Open log file for writing and append to it
        writer = new StreamWriter(file, true);
    }

    public void LogMessage(String message)
    {
        string dt = DateTime.Now.ToString("yyyy-MM-dd H:mm:ss :: ");

        writer.WriteLine(dt + message);
        Console.WriteLine(dt + message);
    }

    public void LogError(String error)
    {
        string dt = DateTime.Now.ToString("yyyy-MM-dd H:mm:ss :: ");

        writer.WriteLine(dt + "ERROR: " + error);
        Console.WriteLine(dt + "ERROR: " + error);
    }
}

我正在我的程序中执行以下操作。

static void Main(string[] args)
{
    Logger log = Logger.GetInstance();
    log.OpenFile("app.log");

    log.LogMessage("Starting App...");

最佳答案

writer.WriteLine(dt + message);
writer.Flush();

或者当您声明writerAutoFlush时为真:

writer = new StreamWriter(file, true);
writer.AutoFlush = true;

编辑:此外,由于您的类将从多线程访问,因此您应该在写入流之前使用 lock ,因为 StreamWriter 实例不是线程安全的,所以:

private readonly object _writerLocker = new object();

lock (_writerLocker)
{
    writer.WriteLine(dt + "ERROR: " + error);
}

关于c# - .NET 日志记录类不写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6888510/

相关文章:

C# 应用程序在 AVG 防病毒软件中出现误报?

c# - 如何使用 Xamarin.Android 在相机流上绘制标记?

c# - Apps 脚本 API 响应没有 "result" key

.net - 具有某些特殊字符的密码的正则表达式,不包括所有其他字符

c# - C# 中 pixelgrabber (Java) 的等效函数是什么

c# - 我可以在 Mouse.Capture() 处于事件状态时获得 MouseLeave 事件吗?

c# - 按依赖项对 .NET 程序集进行排序

java.util.Logger 创建的文件比应有的多

docker - 是否需要清除AKS/Kubernetes中的docker-logs

python-3.x - Python 记录器困惑