日志类 LogUtil

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文转载:http://www.cnblogs.com/HopeGi/archive/2012/12/31/2840812.html   using System; using System.

本文转载: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 == - 1return;
              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
     }
 }

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
存储 数据采集 Kubernetes
一文详解K8s环境下Job类日志采集方案
本文介绍了K8s中Job和Cronjob控制器用于非常驻容器编排的场景,以及Job容器的特点:增删频率高、生命周期短和突发并发大。文章重点讨论了Job日志采集的关键考虑点,包括容器发现速度、开始采集延时和弹性支持,并对比了5种采集方案:DaemonSet采集、Sidecar采集、ECI采集、同容器采集和独立存储采集。对于短生命周期Job,建议使用Sidecar或ECI采集,通过调整参数确保数据完整性。对于突发大量Job,需要关注服务端资源限制和采集容器的资源调整。文章总结了不同场景下的推荐采集方案,并指出iLogtail和SLS未来可能的优化方向。
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
49 2
|
3月前
|
存储 运维 监控
超级好用的C++实用库之日志类
超级好用的C++实用库之日志类
41 0
|
7月前
|
Java 计算机视觉 Python
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进1】
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进1】
126 1
|
4月前
|
数据采集 监控 Kubernetes
Job类日志采集问题之iLogtail以减小容器发现和开始采集的延时如何优化
Job类日志采集问题之iLogtail以减小容器发现和开始采集的延时如何优化
|
4月前
|
数据采集 Kubernetes Java
Job类日志采集问题之在日志中添加容器的元信息标签,如何操作
Job类日志采集问题之在日志中添加容器的元信息标签,如何操作
|
4月前
|
存储 容器
Job类日志采集问题之DaemonSet采集方式的参数以减小采集延时如何调整
Job类日志采集问题之DaemonSet采集方式的参数以减小采集延时如何调整
|
4月前
|
容器
Job类日志采集问题之ECI产品采集方式对于弹性扩缩容是如何支持的
Job类日志采集问题之ECI产品采集方式对于弹性扩缩容是如何支持的
|
4月前
|
存储 数据采集 容器
Job类日志采集问题之DaemonSet采集方式在Job日志采集上如何表现
Job类日志采集问题之DaemonSet采集方式在Job日志采集上如何表现
|
4月前
|
存储 Kubernetes 数据处理
Job类日志采集问题之为什么Job容器的日志采集要考虑容器发现速度和开始采集延时,如何理解
Job类日志采集问题之为什么Job容器的日志采集要考虑容器发现速度和开始采集延时,如何理解

热门文章

最新文章

下一篇
无影云桌面