日志类 LogUtil

本文转载:http://www.cnblogs.com/HopeGi/archive/2012/12/31/2840812.html

 

using System;
 using System.IO;
 
 namespace Common
 {
     /// <summary>
     /// 日志类
     /// </summary>
     public static class LogUtil
     {
         /// <summary>
         /// 配置默认路径
         /// </summary>
         private static string defaultPath = System.Configuration.ConfigurationManager.AppSettings["logPath"];
 
         #region Exception异常日志
 
         /// <summary>
         /// 写异常日志,存放到默认路径
         /// </summary>
         /// <param name="ex">异常类</param>
         public static void WriteError(Exception ex)
         {
             WriteError(ex, defaultPath);
         }
 
         /// <summary>
         /// 写异常日志,存放到指定路径
         /// </summary>
         /// <param name="ex">异常类</param>
         /// <param name="path">日志存放路径</param>
         public static void WriteError(Exception ex, string path)
         {
             string errMsg = CreateErrorMeg(ex);
             WriteLog(errMsg, path, LogType.Error);
         }
 
         #endregion
 
         #region 普通日志
 
         /// <summary>
         /// 写普通日志,存放到默认路径,使用默认日志类型
         /// </summary>
         /// <param name="msg">日志内容</param>
         public static void WriteLog(string msg)
         {
             WriteLog(msg, LogType.Info);
         }
 
         /// <summary>
         /// 写普通日志,存放到默认路径,使用指定日志类型
         /// </summary>
         /// <param name="msg">日志内容</param>
         /// <param name="logType">日志类型</param>
         public static void WriteLog(string msg, LogType logType)
         {
             WriteLog(msg, defaultPath, logType);
         }
 
         /// <summary>
         /// 写普通日志,存放到指定路径,使用默认日志类型
         /// </summary>
         /// <param name="msg">日志内容</param>
         /// <param name="path">日志存放路径</param>
         public static void WriteLog(string msg, string path)
         {
             WriteLog(msg, path, LogType.Info);
         }
 
         /// <summary>
         /// 写普通日志,存放到指定路径,使用指定日志类型
         /// </summary>
         /// <param name="msg">日志内容</param>
         /// <param name="path">日志存放路径</param>
         /// <param name="logType">日志类型</param>
         public static void WriteLog(string msg, string path, LogType logType)
         {
             string fileName = path.Trim('\\')+"\\"+CreateFileName(logType);
             string logContext = FormatMsg(msg,logType);
             WriteFile(logContext, fileName);
         }
 
         #endregion
 
         #region 其他辅助方法
 
         /// <summary>
         /// 写日志到文件
         /// </summary>
         /// <param name="logContext">日志内容</param>
         /// <param name="fullName">文件名</param>
         private static void WriteFile(string logContext, string fullName)
         {
             FileStream fs = null;
             StreamWriter sw = null;
 
             int splitIndex = fullName.LastIndexOf('\\');
             if (splitIndex == -1) return;
             string path = fullName.Substring(0, splitIndex);
             
             if (!Directory.Exists(path)) Directory.CreateDirectory(path);
 
             try
             {
                 if (!File.Exists(fullName)) fs = new FileStream(fullName, FileMode.CreateNew);
                 else fs = new FileStream(fullName, FileMode.Append);
 
                 sw = new StreamWriter(fs);
                 sw.WriteLine(logContext);
             }
             finally
             {
                 if (sw != null)
                 {
                     sw.Close();
                     sw.Dispose();
                 }
                 if (fs != null)
                 {
                     fs.Close();
                     fs.Dispose();
                 }
             }
         }
 
         /// <summary>
         /// 格式化日志,日志是默认类型
         /// </summary>
         /// <param name="msg">日志内容</param>
         /// <returns>格式化后的日志</returns>
         private static string FormatMsg(string msg)
         {
             return FormatMsg(msg, LogType.Info);
         }
 
         /// <summary>
         /// 格式化日志
         /// </summary>
         /// <param name="msg">日志内容</param>
         /// <param name="logType">日志类型</param>
         /// <returns>格式化后的日志</returns>
         private static string FormatMsg(string msg, LogType logType)
         {
             string result;
             string header = string.Format("[{0}][{1} {2}] ", logType.ToString(), DateTime.Now.ToShortDateString(),DateTime.Now.ToShortTimeString());
             result= header + msg;
             return result;
         }
 
         /// <summary>
         /// 从异常类中获取日志内容
         /// </summary>
         /// <param name="ex">异常类</param>
         /// <returns>日志内容</returns>
         private static string CreateErrorMeg(Exception ex)
         {
             string result = string.Empty;
             result += ex.Message+"\r\n";
             result += ex.StackTrace+"\r\n";
             return result;
         }
 
         /// <summary>
         /// 生成日志文件名
         /// </summary>
         /// <param name="logType">日志类型</param>
         /// <returns>日志文件名</returns>
         private static string CreateFileName(LogType logType)
         {
             string result = DateTime.Now.ToString("yyyy-MM-dd");
             if (logType != LogType.Info)
                 result = logType.ToString() + result+".log";
             return result;
         }
 
         #endregion
     }
 
     /// <summary>
     /// 日志类型
     /// </summary>
     public enum LogType
     { 
         Error,
         Info,
         Option
     }
 }

 

时间: 2024-10-02 05:10:48

日志类 LogUtil的相关文章

C# 日志类

本文代码来自:http://www.oschina.net/code/snippet_1181744_27513 作者:ebola 该类的作用:简单日志类,队列实现.可按天 周 月 年 大小分割文件. 代码如下: using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System

来自mooon的最简单的日志类CSimpleLogger

/** * 单个头文件,可即时独立使用,只要定义了宏NOT_WITH_MOOON,即不依赖于mooon * 简单的写日志类,非线程安全,提供按大小滚动功能 * 不追求功能,也不追求性能,只求简单,若要功能强.性能高,可以使用CLogger * * 使用方法: * 1) 构造一个CSimpleLogger对象 * CSimpleLogger logger(".", "test.log", 1024*1024, 10); * 2) 调用print方法写日志 * logg

改进后的日志类CLogger

在原有的基础上增加了module_name,表示模块名,当一个系统由多模块组成时,输出的日志将更加清晰,使用方法,以MOOON-agent中的为例: /** 不要修改下面的常量值,而应当通过对应的方法去修改 * 这些常量值主要是方便多模块共享,故放在这个公有头文件当中 */enum{ LOG_LINE_SIZE_MIN = 256, /** 日志行最小长度 */ LOG_LINE_SIZE_MAX = 32768, /** 日志行最大长度(32K) ,最大不能超过64K,因为使用2字节无符号整数

ASP日志类和判断是否包涵JS脚本类

ASP日志类  代码如下 复制代码 Function WriteLogReg(Error_lerong)     On Error Resume Next     LogFileTmp = "Error.log"     Set tmpFsoR = Server.CreateObject("scripting.filesystemobject")     Set tmpLogR = tmpFsoR.OpentextFile(Server.MapPath(LogFil

C# 简易异步日志类 [ C# | Log | TextWriterTraceListener ]

前言 即使是小型项目,也需要日志的功能,这里就不讨论Log4Net之类的框架,提供一个异步的.控制台输出+日志文件输出的简易日志帮助类.   正文 一.帮助类文件Logger.cs //=========================================//// 作 者:农民伯伯// 邮 箱:over140@gmail.com// 博 客:http://over140.cnblogs.com/// 时 间:2009-7-16// 描 述:日志类,注意需要在日志记录的目录给用户写入权

一个简单php日志类

日志类如下,news目录为当前php文档根目录下子目录. <?phpif( ! defined('BASEPATH') ) {    define ('BASEPATH', $_SERVER['DOCUMENT_ROOT'].'/news/');}require_once BASEPATH.'config/config.inc.php';require_once BASEPATH.'config/constants.php';define ("LOG_PATH", $config

自己写的简易版Java日志类分享_java

/** * */ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; /** * @author magic282 * */ public class Logger { private static String logFilePath; private static boolean

C++语言编写写日志类_C 语言

使用C++语言编写写日志类,支持写日志级别设置.支持多线程.支持可变形参表写日志. 主要提供以下接口: 1.设置写日志的级别 2.写关键日志信息 3.写错误日志信息 4.写警告日志信息 5.写一般日志信息 #ifndef COMMAND_DEFINE_H #define COMMAND_DEFINE_H //日志级别的提示信息 static const char * KEYINFOPREFIX = " Key: \n"; static const char * ERRORPREFIX

【等待事件】等待事件系列(3+4)--System IO(控制文件)+日志类等待

 [等待事件]等待事件系列(3+4)--System IO(控制文件)+日志类等待   1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 控制文件类等待 ② 日志类等待   2.2  相关参考文章链接 [推荐] 等待事件系列(1)--User I/O类型(下) http://blog.itpub.net/26736162/viewspace-2124435