背景:
1.常见的官方日志模块项目过于复杂,且配置过于繁琐,针对这种现象,实现在大型项目中快速定位错误问题;
实现思路:
1.设置当前日志文件路径(获取到当前文件应用程序路径 + \ErrorLog)
2.判断当前日志文件路径是否存在,不存在则创建
3.在当前日志文件路径下创建日志文本
4.判断当前文件是否存在,如果不存在则创建,如果存在则增加
源码:
using System;
using System.IO;
public class Logger
{
private static StreamWriter streamWriter;
// 日志级别
public enum LogLevel
{
INFO,
WARNING,
ERROR
}
public static void WriteLog(LogLevel level, string message)
{
try
{
string directoryPath = Environment.CurrentDirectory + "\\ErrorLog"; //在获得文件夹路径(根据你们自己的实际情况去写错误日志文件夹路径)
// 判断文件夹是否存在,如果不存在则创建
if (!Directory.Exists(directoryPath))
{
Directory.CreateDirectory(directoryPath);
}
string logFilePath = Path.Combine(directoryPath, $"{DateTime.Now.ToString("yyyy-MM-dd")}.log");
// 判断文件是否存在,如果不存在则创建,如果存在则追加。
using (streamWriter = !File.Exists(logFilePath) ? File.CreateText(logFilePath) : File.AppendText(logFilePath))
{
streamWriter.WriteLine("***********************************************************************");
streamWriter.WriteLine(DateTime.Now.ToString("HH:mm:ss"));
streamWriter.WriteLine($"Log Level: {level}");
if (message != null)
{
streamWriter.WriteLine($"Message:\r\n{message}");
}
}
}
finally
{
if (streamWriter != null)
{
streamWriter.Flush();
streamWriter.Dispose();
streamWriter = null;
}
}
}
}
class Program
{
static void Main()
{
// 测试单元
Logger.WriteLog(Logger.LogLevel.INFO, "This is an informational message.");
Logger.WriteLog(Logger.LogLevel.WARNING, "This is a warning message.");
Logger.WriteLog(Logger.LogLevel.ERROR, "This is an error message with some additional information.");
}
}