C# 基础 - 日志捕获一使用 StreamWriter
2024-09-05 00:23:17
public static class LogHelper
{
private static readonly string _baseDir = AppDomain.CurrentDomain.BaseDirectory + "VILog";
private static DateTime _currentDate;
private static StreamWriter _sw;
static LogHelper()
{
DirectoryInfo di = new DirectoryInfo(_baseDir);
if (!di.Exists)
di.Create();
}
private static void CheckLogFile()
{
if (_sw == null)
{
_currentDate = DateTime.Now.Date;
_sw = new StreamWriter(string.Format(_baseDir + "/{0}.{1}-{2}-{3}.log", Process.GetCurrentProcess().ProcessName, _currentDate.Year, _currentDate.Month, _currentDate.Day), true, Encoding.UTF8);
return;
}
DateTime dt = DateTime.Now.Date;
if (DateTime.Compare(dt, _currentDate) != 0)
{
_sw.Close();
_sw = null;
_currentDate = dt;
CheckLogFile();
}
}
public static void Log(string str, object sender = null, LogLevel level = LogLevel.Info, string detail = null)
{
if (IsStopLog) return;
CheckLogFile();
if (string.IsNullOrEmpty(str)) return;
_sw.WriteLine("[{0}.{1}]:[{2}]{3}", DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString(), level, str);
if (!string.IsNullOrEmpty(detail))
_sw.WriteLine("Detail:{0}", detail);
_sw.Flush();
}
public static void Info(string str, object sender = null, string detail = null)
{
Log(str, sender, LogLevel.Info, detail);
}
public static void Error(string str, object sender = null, string detail = null)
{
Log(str, sender, LogLevel.Error, detail);
}
public static void Error(string str, object sender = null, Exception ex = null)
{
string errmsg = ex.StackTrace?.ToString();
Log(str, sender, LogLevel.Error, Environment.NewLine + errmsg);
}
public static void Warning(string str, object sender = null, string detail = null)
{
Log(str, sender, LogLevel.Warning, detail);
}
public static bool IsStopLog { get; set; }
}
public enum LogLevel
{
Info,
Error,
Warning
}
最新文章
- 萌新笔记——git的问题(error: object file .git/objects/* is empty...)的解决方案及对git版本库文件的了解
- div自定义的滚动条 (竖直导航条)
- Modular Query
- http 报文 - 转
- linux 下安装flash player
- Swing实现文件选择(目录选择)附导出
- Adobe DreamweaverCS6安装及破解(序列号+破解补丁)
- -_-#【Backbone】View
- 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)
- 46黑名单显示的bug---(优化ListView)convertView复用带来的问题
- for in,Object.keys()与for of的区别
- 在Windows Server 2008 R2下搭建jsp环境(二)-JDK的下载安装
- shiro三连斩之第一斩
- Linux pwn入门教程(10)——针对函数重定位流程的几种攻击
- [国家集训队]middle 解题报告
- PHP Switch 语句判断成绩
- U3D MemoryProfiler
- cocos2d-x-lua如何导出自定义类到lua脚本环境
- redhat7:用户、组和权限
- 51nod 1290 Counting Diff Pairs | 莫队 树状数组