打印到屏幕并同时记录

时间:2018-05-14 08:21:03

标签: c# .net .net-core

我正在使用.Net CORE,我正在编写一个程序,可以将日志打印到屏幕上,并将日志保存到文件中。 所以我的整个代码都是这样的:

        Console.WriteLine("starting app");
        Log.Debug("stating app");
        if (args.Length < 2)
        {
            Log.Debug("got less than 2 arguments");
            Console.WriteLine("Should be run with arguments:");
            Console.WriteLine("<DirecotryPath> <OutputPath>");
            return;

我的代码中是否存在阻止此重复的问题? 谢谢

2 个答案:

答案 0 :(得分:3)

自定义方法

您可以创建自己的方法,该方法将记录到所有目的地:

public void Log(string message) {
    Log.Debug(message);
    Console.WriteLine(message);
}

从现在开始,您只需调用新创建的Log方法:

Log("stating app");

它会记录到两个目的地......

框架方法

有许多框架可以解决这个问题。 e.g。 log4net的 查看@Hany Habib's answer了解更多详情:

答案 1 :(得分:1)

对于代码重复,您可以创建一个名为

的常用方法
public void Log(string message,Source source) // Source is Enum to check to print on screen or file or both for example
{
     switch(source)
        {
          Case Source.Screen:
                Console.WriteLine(message);
                break;
          Case Source.Log:
               Log.Debug(message);
               break;
          default:
             break;
        }
}

这是为了简单的日志记录,你可以使用Log4Net,它只使用一些配置为你提供了大量的日志记录工具和下面的指南

https://stackify.com/log4net-guide-dotnet-logging/