C#中的一种按日期分文件夹的日志写法
众所周知,日志是调试程序的有效途径,有一个好的日志代码,是一个程序小猿梦寐以求的。
以下是我结合网上资源自己总结的一小段代码,请笑纳:
转载请注明来源: 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#中的一种按日期分文件夹的日志写法相关推荐
- 日志 log4j按日期生成文件夹
期望结果:按日期生成文件夹,在最底层文件夹中记录日志,如:2019/03/11,在11这个文件夹下记录11号的日志,03和2019均为11的父文件夹. API:log4j 主要步骤:继承log4j的o ...
- python中glob模块怎么下_如何在Python中使用glob.glob模块搜索子文件夹?
如何在Python中使用glob.glob模块搜索子文件夹? 我想在文件夹中打开一系列子文件夹,找到一些文本文件并打印一些文本文件行. 我用这个: configfiles = glob.glob('C ...
- 从Discuz!NT项目文件结构看如何给系统框架分层和类库分文件夹
以下为Discuz!NT的文件夹根目录: 类库图: 从上面两个图可以看出: 1.dnt对于类库的分层是通过名称的层级来区分的,如Discuz.Plugn和Discuz.Plugin.Spread 2. ...
- C++写日志源代码分析,可实现根据日期自动创建文件夹、日志分类、文件大小控制等
最近在做一个项目,使用C++写一个动态链接库(dll),里面需要有日志功能,于是参考网上的资料实现了C++写日志的功能.日志可以指定路径保存,也可以默认保存在当前可执行程序(exe)所在的文件夹.现在 ...
- IDEA中创建maven项目后解决main文件夹下目录不全的问题
IDEA中创建maven项目后解决main文件夹下目录不全的问题 参考文章: (1)IDEA中创建maven项目后解决main文件夹下目录不全的问题 (2)https://www.cnblogs.co ...
- mysql xp cmdshell_LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句...
LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件 ...
- js多文件下载和多文件分文件夹打包下载并重命名
js多文件下载并重命名 let list=['...'] function downloadFile(list,index){//下载文件方法if(index>=list.length){ret ...
- python 多文件夹中按条件复制到新的文件夹并重命名
将文件夹2010,2011,label中的文件,复制到res/train1 - 文件中去,train1 是新建的文件夹,并重命名 import shutil import osdef read_fil ...
- linux如何删除指定大小以下的文件夹,Linux中定时删除超过指定大小的文件夹
背景: 开发环境总是动不动就没有空间了, 大部分都是debug日志.所以有必要在日志很疯狂的时候,删除不必要的日志. 思路:一. 书写删除日志文件脚本: 定时任务执行. 但是有时候的日志是需要保存用 ...
最新文章
- 如何通过域服务器推送安装文件,域环境推送exe程序并自动安装教程域环境推送exe程序并自动安装教程.pdf...
- IBatis.Net学习笔记六--再谈查询
- Jetty和Tomcat
- Android Studio 导入 AOSP 源码 1
- linux学习之lvm2逻辑卷管理
- java自动类型提升_Java中的基本数据类型转换(自动、强制、提升)
- jQuery - 选择器(五)
- 怎么更改计算机的搜索设置,电脑浏览器默认搜索引擎的设置不了怎么办
- 免费计算机网络同传系统,使用网络同传功能批量完成系统安装
- 职场中,什么样的人最容易升职?
- SIEBEL配置学习笔记
- 关于Google您的连接不是私密连接问题的解决方法 (Chrome 地址栏 Google 搜索错误处理 隐私设置错误)
- icraft服务器网页图片,iCraft家族添新一代顶级显卡
- 贷超、贷超分销系统 贷超分销模式 简介
- Android Studio 默认安装路径,SDK默认安装路径
- 常用汉字unicode编码
- 基于React、Typescript和Solidity的NFT完整教程
- 图片Base64编码
- 基于springboot学生公寓管理系统-计算机毕业设计源码+LW文档
- 基于JAVA-游戏账号交易平台-演示录像-计算机毕业设计源码+系统+mysql数据库+lw文档+部署