众所周知,日志是调试程序的有效途径,有一个好的日志代码,是一个程序小猿梦寐以求的。

以下是我结合网上资源自己总结的一小段代码,请笑纳:

转载请注明来源: http://www.cnblogs.com/benpao/p/3766644.html

using System.Text;
using System.IO;

public class Log{private static LogManager logManager;static Log(){logManager = new LogManager();}public static void WriteLog(LogFile logFile, string msg){try{logManager.WriteLog(logFile, msg);}catch{}}public static void WriteLog(string msg){try{logManager.WriteLog(LogFile.Info, msg);}catch{}}public static void WriteLog(string logFile, string msg){try{logManager.WriteLog(logFile, msg);}catch{}}}public class LogManager{private string logFileName = string.Empty;private string logPath = "Log";private string logFileExtName = "log";private bool writeLogTime = true;private bool logFileNameEndWithDate = true;private Encoding logFileEncoding = Encoding.UTF8;private object obj = new object();#region 构造函数public LogManager(){this.LogPath = "Log";this.LogFileExtName = "log";this.WriteLogTime = true;this.logFileNameEndWithDate = true;this.logFileEncoding = Encoding.UTF8;}public LogManager(string logPath, string logFileExtName, bool writeLogTime){this.LogPath = logPath;this.LogFileExtName = logFileExtName;this.WriteLogTime = writeLogTime;this.logFileNameEndWithDate = true;this.logFileEncoding = Encoding.UTF8;}#endregion#region 属性/// <summary>/// Log 文件路径/// </summary>public string LogPath{get{if (this.logPath == null || this.logPath == string.Empty){//Application.StartupPaththis.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyy-MM-dd"));}return this.logPath;}set{this.logPath = value;if (this.logPath == null || this.logPath == string.Empty){//Application.StartupPaththis.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyy-MM-dd"));}else{try{// 判断是否不是绝对路径(绝对路径里还有":")if (this.logPath.IndexOf(Path.VolumeSeparatorChar) >= 0){ /* 绝对路径 */}else{// 相对路径this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory + this.logPath, DateTime.Now.ToString("yyyy-MM-dd"));}if (!Directory.Exists(this.logPath))Directory.CreateDirectory(this.logPath);}catch{this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyy-MM-dd"));}if (!this.logPath.EndsWith(@"\"))this.logPath += @"\";}}}/// <summary>/// Log 文件扩展名/// </summary>public string LogFileExtName{get { return this.logFileExtName; }set { this.logFileExtName = value; }}/// <summary>/// 是否在每个Log行前面添加当前时间/// </summary>public bool WriteLogTime{get { return this.writeLogTime; }set { this.writeLogTime = value; }}/// <summary>/// 日志文件名是否带日期/// </summary>public bool LogFileNameEndWithDate{get { return logFileNameEndWithDate; }set { logFileNameEndWithDate = value; }}/// <summary>/// 日志文件的字符编码/// </summary>public Encoding LogFileEncoding{get { return logFileEncoding; }set { logFileEncoding = value; }}#endregion#region 公有方法public void WriteLog(string logFile, string msg){lock (obj){try{string dateString = string.Empty;if (this.logFileNameEndWithDate || logFile.Length == 0){dateString = DateTime.Now.ToString("yyyyMMdd");}logFileName = string.Format("{0}{1}{2}.{3}",this.LogPath,logFile,dateString,this.logFileExtName);using (StreamWriter sw = new StreamWriter(logFileName, true, logFileEncoding)){if (writeLogTime){sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss: ") + msg);}else{sw.WriteLine(msg);}}}catch{}}}public void WriteLog(LogFile logFile, string msg){this.WriteLog(logFile.ToString(), msg);}public void WriteLog(string msg){this.WriteLog(string.Empty, msg);}#endregion}public enum LogFile{Trace,Error,SQL,SQLError,Login,Info,WeChat}

码农都是有尊严的

转载请注明来源,谢谢

http://www.cnblogs.com/benpao/

转载于:https://www.cnblogs.com/benpao/p/3766644.html

C#中的一种按日期分文件夹的日志写法相关推荐

  1. 日志 log4j按日期生成文件夹

    期望结果:按日期生成文件夹,在最底层文件夹中记录日志,如:2019/03/11,在11这个文件夹下记录11号的日志,03和2019均为11的父文件夹. API:log4j 主要步骤:继承log4j的o ...

  2. python中glob模块怎么下_如何在Python中使用glob.glob模块搜索子文件夹?

    如何在Python中使用glob.glob模块搜索子文件夹? 我想在文件夹中打开一系列子文件夹,找到一些文本文件并打印一些文本文件行. 我用这个: configfiles = glob.glob('C ...

  3. 从Discuz!NT项目文件结构看如何给系统框架分层和类库分文件夹

    以下为Discuz!NT的文件夹根目录: 类库图: 从上面两个图可以看出: 1.dnt对于类库的分层是通过名称的层级来区分的,如Discuz.Plugn和Discuz.Plugin.Spread 2. ...

  4. C++写日志源代码分析,可实现根据日期自动创建文件夹、日志分类、文件大小控制等

    最近在做一个项目,使用C++写一个动态链接库(dll),里面需要有日志功能,于是参考网上的资料实现了C++写日志的功能.日志可以指定路径保存,也可以默认保存在当前可执行程序(exe)所在的文件夹.现在 ...

  5. IDEA中创建maven项目后解决main文件夹下目录不全的问题

    IDEA中创建maven项目后解决main文件夹下目录不全的问题 参考文章: (1)IDEA中创建maven项目后解决main文件夹下目录不全的问题 (2)https://www.cnblogs.co ...

  6. mysql xp cmdshell_LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句...

    LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件 ...

  7. js多文件下载和多文件分文件夹打包下载并重命名

    js多文件下载并重命名 let list=['...'] function downloadFile(list,index){//下载文件方法if(index>=list.length){ret ...

  8. python 多文件夹中按条件复制到新的文件夹并重命名

    将文件夹2010,2011,label中的文件,复制到res/train1 - 文件中去,train1 是新建的文件夹,并重命名 import shutil import osdef read_fil ...

  9. linux如何删除指定大小以下的文件夹,Linux中定时删除超过指定大小的文件夹

    背景: 开发环境总是动不动就没有空间了, 大部分都是debug日志.所以有必要在日志很疯狂的时候,删除不必要的日志. 思路:一. 书写删除日志文件脚本: 定时任务执行.  但是有时候的日志是需要保存用 ...

最新文章

  1. 如何通过域服务器推送安装文件,域环境推送exe程序并自动安装教程域环境推送exe程序并自动安装教程.pdf...
  2. IBatis.Net学习笔记六--再谈查询
  3. Jetty和Tomcat
  4. Android Studio 导入 AOSP 源码 1
  5. linux学习之lvm2逻辑卷管理
  6. java自动类型提升_Java中的基本数据类型转换(自动、强制、提升)
  7. jQuery - 选择器(五)
  8. 怎么更改计算机的搜索设置,电脑浏览器默认搜索引擎的设置不了怎么办
  9. 免费计算机网络同传系统,使用网络同传功能批量完成系统安装
  10. 职场中,什么样的人最容易升职?
  11. SIEBEL配置学习笔记
  12. 关于Google您的连接不是私密连接问题的解决方法 (Chrome 地址栏 Google 搜索错误处理 隐私设置错误)
  13. icraft服务器网页图片,iCraft家族添新一代顶级显卡
  14. 贷超、贷超分销系统 贷超分销模式 简介
  15. Android Studio 默认安装路径,SDK默认安装路径
  16. 常用汉字unicode编码
  17. 基于React、Typescript和Solidity的NFT完整教程
  18. 图片Base64编码
  19. 基于springboot学生公寓管理系统-计算机毕业设计源码+LW文档
  20. 基于JAVA-游戏账号交易平台-演示录像-计算机毕业设计源码+系统+mysql数据库+lw文档+部署

热门文章

  1. 宋祖儿面对粉丝不停撩头发,手上的书本亮了,是要转行当程序员?
  2. java B2B2C Springcloud电子商城系统-断路器(Hystrix)
  3. iOS截取NSString字符串
  4. js 回车触发点击事件
  5. 深入剖析-关于分页语句的性能优化
  6. 简单介绍自动化运维工具clip
  7. Java IO学习笔记四
  8. 第二课_课后习题解答
  9. hive 添加分区
  10. PostgreSQL 模式删除背后的代码