WPF开发随笔收录-本地日志LogUtil类


一、前言

生活中的日志是记录你生活的点点滴滴,让它把你内心的世界表露出来,更好的诠释自己的内心世界。而在开发者眼中的日志是我们排除问题的第一手资料,项目中的程序上线之后,一旦发生异常,第一件事就是先去查看日志是否有捕获到什么异常信息,然后再根据日志去排查问题。所以日志的重要性是非常高的,今天就分享一个简单的本地日记工具类。

二、正文

1、代码比较简单,这里直接贴出日志的代码,该类会在exe所在的目录下生成一个文件夹,然后每天生成一个文本来储存日志信息。这里我只添加了三个简单的方法,有需要的可以自己改造成更高级的用法。

public static class LogUtil
{
    private const int LOG_CONTENT_MAX_LENGTH = 800;

    static LogUtil()
    {
        string logDirPath = Path.Combine(Directory.GetCurrentDirectory(), "Log");
        if (!Directory.Exists(logDirPath))
        {
            Directory.CreateDirectory(logDirPath);
        }
    }

    private static string TestCurrentLogExists()
    {
        string logPath = Path.Combine(Directory.GetCurrentDirectory(), "Log", DateTime.Now.ToString("yyyy-MM-dd") + ".log");
        if (!File.Exists(logPath))
        {
            File.Create(logPath).Close();
        }
        return logPath;
    }

    public static void Debug(string text)
    {
        WriteLog("Debug", text);
    }

public static void Error(string text) { WriteLog("Error", text); } public static void Info(string text) { WriteLog("Info", text); }

private static void WriteLog(string label, string log_content) { if (log_content.Length > LOG_CONTENT_MAX_LENGTH) { log_content = log_content.Substring(0, LOG_CONTENT_MAX_LENGTH); } var logPath = TestCurrentLogExists(); using (var fs = File.Open(logPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { fs.Position = fs.Length; byte[] bytes = Encoding.UTF8.GetBytes($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} {label} {log_content}{Environment.NewLine}"); fs.Write(bytes, 0, bytes.Length); } } }

2、使用示例,这里去遍历一个空的List来触发一个异常,然后看看日志有没有帮我们记录下异常信息。

public partial class MainWindow : Window
{
    private List<string> lists = null;

    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        LogUtil.Info("这是一条普通的信息!!!");
        LogUtil.Debug("这是一条普通的调试信息!!!");

        try
        {
            foreach (var item in lists)
            {
                Console.WriteLine(item);
            }
        }
        catch (Exception ex)
        {
            LogUtil.Error(ex.ToString());
            throw;
        }
    }
}

 

3、运行结果,可以看到exe所在的目录下生成了一个Log文件夹,目录下也生成了一个以当日日期命名的.log文件

 

 

 

 4、打开日志,我们可以看到异常的信息已经被记录到日志文件中,程序的哪个文件,哪个方法里的哪一行的什么异常导致的都已经清晰可见,这样就能方便定位的问题所在了

 

 

 

 

 

 

文章来源:https://www.cnblogs.com/cong2312/p/15738289.html

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:winform 关闭form2的同时显示form1
下一篇:.net中使用Linq 判断两个集合是否有交集的集合类
评论列表

发表评论

评论内容
昵称:
关联文章

WPF开发随笔收录-本地日志LogUtil
WPF开发随笔收录-唯一标识符GUID
WPF开发随笔收录-仿安卓Toast
WPF开发随笔收录-带递增递减按钮TextBox
WPF开发随笔收录-自定义图标控件
Winform开发框架日志管理
YES-WIN Winform开发框架 日志管理升级指南
YESWEB POS开发库调试
Xamarin.Forms 复制本地SQLite数据库
ABP VNext框架基础知识介绍(1)--框架基础继承关系
WPF对象级资源
C# 值得永久收藏的WPF项目实战(经典)
【UWP】开发小技巧――判断是否存在
在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息
[WPF] 实现 WPF 的 Inner Shadow
.Net Core 5.x Api开发笔记 -- 基础日志(Log4Net)(八)
git 放弃本地修改
走进WPF之MVVM完整案例
WPF程序级资源
Electron调用C#库dll

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码