c# 程序检测日志输出的类
public class LogWrite
{
public LogWrite()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region Constant
//单个日志文件大小
private const long FILESIZE = * * ;
//日志文件数
private const int LOGFILENUM = ;
//日志类型
private const short DEBUG = ;
private const short INFO = ;
private const short WARNING = ;
private const short ERROR = ;
//日志级别
private const short LOGLEVEL = DEBUG;
#endregion
#region Members
//日志文件路径
private string m_LogDir = System.Windows.Forms.Application.StartupPath + "\\module0\\Log";
private string m_filePath = System.Windows.Forms.Application.StartupPath + "\\module0\\Log\\Log.txt";//工作日志文件
private static LogWrite m_Log = null;
private Object objLock = new Object();
private string destClass = string.Empty;
#endregion
#region Properties
/// <summary>
/// 记录日志的类名
/// </summary>
public string DestClass
{
get { return destClass; }
set { destClass = value; }
}
#endregion
#region Ctor
#endregion
#region Public Methods
/// <summary>
/// 创建日志类实例
/// </summary>
/// <returns></returns>
public static LogWrite CreateInstance()
{
if (m_Log == null)
{
m_Log = new LogWrite();
}
return m_Log;
}
/// <summary>
/// 写信息日志
/// </summary>
/// <param name="content"></param>
public void Info(string content)
{
if (LOGLEVEL <= )
{
lock (objLock)
{
WriteLog(content, LogWrite.INFO);
}
}
}
/// <summary>
/// 写调试日志
/// </summary>
/// <param name="content"></param>
public void Debug(string content)
{
if (LOGLEVEL <= )
{
lock (objLock)
{
WriteLog(content, LogWrite.DEBUG);
}
}
}
/// <summary>
/// 写警告日志
/// </summary>
/// <param name="content"></param>
public void Warning(string content)
{
if (LOGLEVEL <= )
{
lock (objLock)
{
WriteLog(content, LogWrite.WARNING);
}
}
}
/// <summary>
/// 写错误日志
/// </summary>
/// <param name="content"></param>
public void Error(string content)
{
if (LOGLEVEL <= )
{
lock (objLock)
{
WriteLog(content, LogWrite.ERROR);
}
}
}
#endregion
#region Private Methods
/// <summary>
/// 写日志
/// </summary>
/// <param name="content"></param>
/// <param name="type"></param>
private void WriteLog(string content, short type)
{
if (content == null || content.Equals(string.Empty))
{
return;
}
try
{
if (!File.Exists(m_filePath))
{
CreateWorkLogFile();
}
if (LogFileIsTooLarge(m_filePath))
{
ProcessLogFile();
}
string strType = "";
switch (type)
{
case DEBUG:
strType = " [DEBUG] ";
break;
case INFO:
strType = " [INFO] ";
break;
case WARNING:
strType = " [WARNING] ";
break;
case ERROR:
strType = " [ERROR] ";
break;
default:
strType = " [INFO] ";
break;
}
string strContent = string.Format("{0}\t{1}\t[{2}]\t{3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), strType, DestClass, content);
StreamWriter sWriter = new StreamWriter(m_filePath, true, System.Text.Encoding.Default);
sWriter.WriteLine(strContent);
sWriter.Flush();
sWriter.Close();
sWriter = null;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
/// <summary>
/// 创建工作日志文件
/// </summary>
private void CreateWorkLogFile()
{
if (!Directory.Exists(m_LogDir))
{
Directory.CreateDirectory(m_LogDir);
}
FileStream fStream = new FileStream(m_filePath, FileMode.CreateNew);
fStream.Flush();
fStream.Close();
fStream = null;
}
/// <summary>
/// 判断日志文件是否超过预定义最大值
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
private bool LogFileIsTooLarge(string fileName)
{
FileInfo fi = new FileInfo(fileName);
if (fi.Length >= FILESIZE)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 处理日志文件(工作日志文件超过最大值)
/// </summary>
private void ProcessLogFile()
{
try
{
DirectoryInfo dirInfo = new DirectoryInfo(m_LogDir);
FileInfo[] vFileInfo = dirInfo.GetFiles("*.txt");
if (vFileInfo != null && vFileInfo.Length > LOGFILENUM)
{
FileInfo oldFile = vFileInfo[];
foreach (FileInfo fi in vFileInfo)
{
if (DateTime.Compare(fi.LastWriteTime, oldFile.LastWriteTime) < )
{
oldFile = fi;
}
}
File.Delete(oldFile.FullName);
}
File.Copy(m_filePath, m_LogDir + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt");
File.Delete(m_filePath);
CreateWorkLogFile();
}
catch
{
}
}
#endregion
}
类的路径需要修改下,就OK 了
private string m_LogDir = System.Windows.Forms.Application.StartupPath + "\\module0\\Log";
private string m_filePath = System.Windows.Forms.Application.StartupPath + "\\module0\\Log\\Log.txt";//工作日志文件
用的时候 只要实例就行了
private LogWrite m_Log = null; //构造函数里
m_Log = module0.WritLog.LogWrite.CreateInstance();
m_Log.set_DestClass
//输出日志在地方
m_Log.Info(System.DateTime.get_Now().ToString() + " :... ");
c# 程序检测日志输出的类的更多相关文章
- 关于在Eclipse上运行Hadoop程序的日志输出问题
在安装由Eclipse-Hadoop-Plugin的Eclipse中, 可以直接运行Hadoop的MapReduce程序, 但是如果什么都不配置的话你发现Eclipse控制台没有任何日志输出, 这个问 ...
- iOS项目之使用开关控制日志输出的功能
最近一直在做sdk的项目,用户提出了一个需求,需要屏蔽sdk内部的日志输出.由于sdk内部的日志是为了调试,如果屏蔽了肯定不方便,所以研究了一下日志输出开关的功能. 在这里介绍两种实现方案:一种方案是 ...
- Log4j将不同Package的日志输出到不同的文件的方法
随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就存在以下这些日志: 接收外界消息的日志.对外发送消息的日志: 后台常驻线程 ...
- Log4j将不同Package的日志输出到不同的文件
转自:http://www.crazyant.net/1931.html 随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就 ...
- Qt编写调试日志输出类带网络转发(开源)
用qt开发商业程序已经九年了,陆陆续续开发过至少几十个程序,除了一些算不算项目的小工具外,大部分的程序都需要有个日志的输出功能,希望可以将程序的运行状态存储到文本文件或者数据库或者做其他处理等,qt对 ...
- Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。
#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类T ...
- 使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB)
使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB) http://www.cnblogs.com/mrkelly/p/4015245.html 以往调试Androi ...
- springboot+logback日志输出企业实践(上)
目录 1.引言 2.logback简介 3. springboot默认日志框架-logback 3.1 springboot示例工程搭建 3.2 日志输出与基本配置 3.2.1 日志默认输出 3.2. ...
- Java自定义日志输出文件
Java自定义日志输出文件 日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别.打印形式和日志的输出路径 ...
随机推荐
- 原生+jquery 实现好看滚动条。
//原生 <!doctype html> <html> <head> <meta charset="utf-8"> <titl ...
- volley_之基本使用
Volley的基本使用-------------- 本人初学,如有纰缪,望指正~ Volley是Google在2003年的I/O大会上推出的通信框架,结合了AsyncHttpClient和Univer ...
- MySQL中四舍五入的实现
MySQL四舍五入的实现 文章主要描述的是MySQL四舍五入的实际应用, 以及在其实际操作中的值得我们大家注意的事项与其实际应用代码的描述,以下就是文章的主要内容的详细描述,望大家在浏览之后会对其 ...
- invalid END header (bad central directory offset) 异常解决方法
今天版本升级时,一个ear包在传到aix下,weblogic后启动出现 invalid END header (bad central directory offset) 后来才发下是文件传输中出现了 ...
- [翻译]用神经网络做回归(Using Neural Networks With Regression)
本文英文原文出自这里, 这个博客里面的内容是Java开源, 分布式深度学习项目deeplearning4j的介绍学习文档. 简介: 一般来说, 神经网络常被用来做无监督学习, 分类, 以及回归. 也就 ...
- 关于oracle中to_char和to_date的用法
一.24小时的形式显示出来要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('200 ...
- 关于oracle的相关基础语句
----给表的字段添加描述COMMENT ON COLUMN 数据库名称.表名.表字段 IS '字段描述'; ---设置自动增长 CREATE SEQUENCE emp_sequence INCREM ...
- MXS 编辑器外观
Tool > Open User Options File # Give symbolic names to the set of colours used in the standard st ...
- MySQL 的 RowNum 实现
MySQL 的 RowNum 实现 MySQL 下面没有RowNum,排序后序号却无法得到,比较麻烦! 在网上找了再三,通过比较,确认了以下的方法是可行的 : rownum, CollectSn ,b ...
- 如何设置a标签的宽高,如何使a标签的文字垂直居中
通常情况下a标签是没有宽高的,设置 width 和 height 没有作用. 若要使用 width 和 height,需要把a标签转为块级元素,即:display:block|inline-block ...