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
}

最新文章

  1. 萌新笔记——git的问题(error: object file .git/objects/* is empty...)的解决方案及对git版本库文件的了解
  2. div自定义的滚动条 (竖直导航条)
  3. Modular Query
  4. http 报文 - 转
  5. linux 下安装flash player
  6. Swing实现文件选择(目录选择)附导出
  7. Adobe DreamweaverCS6安装及破解(序列号+破解补丁)
  8. -_-#【Backbone】View
  9. 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)
  10. 46黑名单显示的bug---(优化ListView)convertView复用带来的问题
  11. for in,Object.keys()与for of的区别
  12. 在Windows Server 2008 R2下搭建jsp环境(二)-JDK的下载安装
  13. shiro三连斩之第一斩
  14. Linux pwn入门教程(10)——针对函数重定位流程的几种攻击
  15. [国家集训队]middle 解题报告
  16. PHP Switch 语句判断成绩
  17. U3D MemoryProfiler
  18. cocos2d-x-lua如何导出自定义类到lua脚本环境
  19. redhat7:用户、组和权限
  20. 51nod 1290 Counting Diff Pairs | 莫队 树状数组

热门文章

  1. CPU饥饿与线程饥饿
  2. C# LINQ (2)
  3. 链接脚本再探和VMA与LMA
  4. 使用 js 实现十大排序算法: 希尔排序
  5. 微信小程序-云开发实战教程
  6. jest ignore
  7. chrome device remote debug
  8. redux & connect
  9. XML & XPath & XQuery
  10. nasm astrrchr函数 x86