在程序发布到服务器上的时候,不能在像本地执行一样可以调试,在发生错误时候,往往不能很方便的查找错误。将错误信息写入文件是一种比较常用的处理方法。以下是一个日志类,实现以下功能:

1)按日期每天生产不同日志文件,方便按照日期来查找日志。

2)按日志类型生产不同的文件,比如 跟踪信息、警告信息、错误信息用不同的日志文件来记录;方便我们查找指定类型的日志。

3)可以指定保持日志文件文件夹,如果不指定日志文件夹,Web应用保持到Bin文件夹,Windows Forms应用保持到.EXE文件所在的文件夹。

4)可以指定日志的前缀

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web; /// <summary>
/// LogManager 的摘要说明
/// </summary>
/// 1)按日期每天生产不同日志文件,方便按照日期来查找日志。
/// 2)按日志类型生产不同的文件,比如 跟踪信息、警告信息、错误信息用不同的日志文件来记录;方便我们查找指定类型的日志。
/// 3)可以指定保持日志文件文件夹,如果不指定日志文件夹,Web应用保持到Bin文件夹,Windows Forms应用保持到.EXE文件所在的文件夹。
/// 4)可以指定日志文件的前缀。
public class LogManager
{
private static string logPath = string.Empty;
/// <summary>
/// 保存日志的文件夹
/// </summary>
public static string LogPath
{
get
{
if (logPath == string.Empty)
{
if (System.Web.HttpContext.Current == null)
// Windows Forms 应用
logPath = AppDomain.CurrentDomain.BaseDirectory; //根目录
else
// Web 应用
logPath = AppDomain.CurrentDomain.BaseDirectory + @"bin/"; //存放在bin文件夹下
}
return logPath;
}
set { logPath = value; }
} private static string logFielPrefix = string.Empty;
/// <summary>
/// 日志文件前缀
/// </summary>
public static string LogFielPrefix
{
get { return logFielPrefix; }
set { logFielPrefix = value; }
} /// <summary>
/// 写日志
/// </summary>
public static void WriteLog(string logFile, string msg)
{
try
{
System.IO.StreamWriter sw = System.IO.File.AppendText(
LogPath + LogFielPrefix + logFile + "_" +
DateTime.Now.ToString("yyyyMMdd") + ".Log"
);
StringBuilder sb = new StringBuilder();
//sb.Append("---------------------------------------------------------------------");
sb.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss: ") + "错误信息:");
//sb.Append("---------------------------------------------------------------------");
sb.Append(msg);
//sb.Append("---------------------------------------------------------------------");
sw.WriteLine(sb.ToString());
sw.Close();
}
catch(Exception IoEx)
{
WriteLog(LogFile.Error, IoEx.Message.ToString());
}
} /// <summary>
/// 写日志
/// </summary>
public static void WriteLog(LogFile logFile, string msg)
{
WriteLog(logFile.ToString(), msg);
}
} /// <summary>
/// 日志类型
/// </summary>
public enum LogFile
{
Trace, //跟踪文件
Warning,//警告文件
Error,
SQL
}

  调用

LogManager.LogPath = "D://"; //文件目录 不赋值存放在默认位置
LogManager.LogFielPrefix = "02"; //文件前缀
LogManager.WriteLog(LogFile.Trace,"26568235673265874");

  

  

[C#] 日志类的更多相关文章

  1. php 文件日志类

    php文件日志类,按年月日组织目录结构. <?php class FileLog { private $_filepath; //文件路径 private $_filename; //日志文件名 ...

  2. android Loger日志类(获取内置sd卡)

    Android手机自带内部存储路径的获取 原文地址:http://my.oschina.net/liucundong/blog/288183 直接贴代码: public static String g ...

  3. 简单实用的日志类CLog (Python版)

    #coding: utf-8 import time ''' /***************************************************************** Fu ...

  4. 高性能日志类KLog(已开源代码)

    项目开源地址:https://github.com/ihambert/KLog  上回介绍了超简易日志类,但他有诸多的局限性,注定了不能作为一个网站的日志类. 那什么样的日志类才能用于网站呢.首先来假 ...

  5. 自己编写的 C++ 超轻量级日志类

    [自己编写的 C++ 超轻量级日志类(兼容vc++6.0.vs2010.vs2015)] 先来看效果: [测试文件:test.cpp] /* 作者:闫文山 时间:2017/07/02 介绍: 本日志类 ...

  6. C++ IO操作API及注意事项(包含一个日志类的实现)

    C++是一个抽象程度比C高很多的语言,在使用C++时,编译器做了很多工作,如果我们不对C++的某些特性的实现机制进行了解,那么编程时也许会有很多疑惑,我们也许知道怎样做才是正确的,但不知道为什么要这样 ...

  7. C++ 最简单的日志类

    最近搞一个 C++ 项目的二次开发,没玩过 C++,可谓步履维艰.自己写个简单的日志类都被各种坑折磨.终于搞定了. 参考了这篇博客,并且进一步简化:https://www.cnblogs.com/Ds ...

  8. 支持异步写入的日志类,支持Framework2.0

    因为工作需要需要在XP上运行一个C#编写的Winform插件,我就用Framework2.0,因为存在接口交互所以想保留交易过程的入参出参. 考虑到插件本身实施的因素,就没有使用Log4.NLog等成 ...

  9. python3 配置logging日志类

    配置类config_file: from configparser import ConfigParser class config_file: def __init__(self,conf_file ...

随机推荐

  1. javascript代码 调试方法

    你的代码可能包含语法错误,逻辑错误,如果没有调试工具,这些错误比较难于发现. 通常,如果 JavaScript 出现错误,是不会有提示信息,这样你就无法找到代码错误的位置. 在程序代码中寻找错误叫做代 ...

  2. 如何利用FineBI做财务分析

    很多企业随着业务规模的增长,传统的财务分析方式采用手工摘取数据的方式,难以快速地对企财务经营状况作出及时分析和预测.现在业务人员通过使用自助式BI工具做财务分析已经成为流行,每个人都希望自己做报表,快 ...

  3. Android事件分发机制浅谈(二)--源码分析(ViewGroup篇)

    上节我们大致了解了事件分发机制的内容,大概流程,这一节来分析下事件分发的源代码. 我们先来分析ViewGroup中dispatchTouchEvent()中的源码 public boolean dis ...

  4. 什么是RAID?RAID有什么用?RAID原理

    什么是RAID 硬盘是个很脆弱的东西,它经常会坏掉.所以,为了保证服务器可靠耐用,硬盘必须时时刻刻保持可用.所以有了RAID这个东西.它的目的是将好几个硬盘合并在一起,就算硬盘坏了一个,剩下还有好几个 ...

  5. Tomcat中的Session小结

    什么是Session 对Tomcat而言,Session是一块在服务器开辟的内存空间,其存储结构为ConcurrentHashMap: Session的目的 Http协议是一种无状态协议,即每次服务端 ...

  6. javascript函数的几种写法集合

    1.常规写法 function fnName(){ console.log("常规写法"); } 2.匿名函数,函数保存到变量里 var myfn = function(){ co ...

  7. Oracle学习笔记八 表空间

    表空间 表空间是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 .   分区表 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下 ...

  8. Android ListView ArrayAdapter 的简单使用

    前面写了3篇关于android的文章,其中的演示程序都写在了一个工程中,当时为了方便测试就在启动页MainActivity中放了3个按钮,点击不同的按钮进入不同的示例程序页面,MainActivity ...

  9. Linux 系统常用命令汇总(三) 用户和用户组管理

    用户和用户组管理 命令 选项 注解 示例 useradd [选项] 用户名 新建用户 创建一个名为tester的用户,并指定他的UID为555,指定加入test群,指定其使用C-shell:  use ...

  10. AC日记——滑动窗口 洛谷 P1886

    题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...