日志的记录是将程序过程中的一些行为数据记录下来,方便开发、运维迅速的找到问题的所在,节省时间。使用时在

站点的web.config 中的<appSettings></appSettings>节点中增加:

  <!-- 日志路径 -->

  <add key="LogDirectory" value="E:\TextLog" />

  <!-- 日志名称 -->

  <add key="ProgramName" value="日志记入类" />

private static string LogDirectory = ConfigurationManager.AppSettings["LogDirectory"];
private static string programName = ConfigurationManager.AppSettings["ProgramName"];
/// <summary>
/// 是否入库 web.config配置 UniteLogStart
/// </summary>
//private static string isInLog = ConfigurationManager.AppSettings["UniteLogStart"];
private static string isInLog;
public LogProxy()
{ } /// <summary>
/// 重载功能操作日志入库
/// </summary>
/// <param name="text">错误信息</param>
/// <param name="userid">用户名</param>
/// <param name="scode">功能id</param>
public static void Write(string text, string userid, string scode, Database m_DataBase)
{
try
{
if (isInLog != null || isInLog == "")//是否入库
{
//插入该操作
string tmpSQL = String.Format("insert into SYS_USER_LOG(USER_ID,CLIENT_IP,BUSINESS_NAME,BUSINESS_ID,IS_SUCCESS) values('{0}','{1}',F_GET_BUSINESSNAME('{2}'),'{2}','1')", userid, HttpContext.Current.Request.UserHostAddress, scode);
m_DataBase.ExecuteNonQuery(m_DataBase.GetSqlStringCommand(tmpSQL));
}
}
catch (Exception e)
{
WriteExp("操作日志插入错误:" + e.Message);
} string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + ".log";
LogWriter.Writer(directory, fileName, text); }
/// <summary>
/// 重载是否错误日志入库
/// </summary>
/// <param name="text">错误信息</param>
/// <param name="userid">用户名</param>
/// <param name="scode">功能id</param>
public static void WriteExp(string text, string userid, string scode, Database m_DataBase)
{ try
{
if (isInLog != null || isInLog == "")//是否入库
{
//插入该操作
string tmpSQL = String.Format("insert into SYS_USER_LOG(USER_ID,CLIENT_IP,BUSINESS_NAME,BUSINESS_ID,IS_SUCCESS,FAILURE_EXCEPTION) values('{0}','{1}',F_GET_BUSINESSNAME('{2}'),'{2}','1','{3}')", userid, HttpContext.Current.Request.UserHostAddress, scode, text);
m_DataBase.ExecuteNonQuery(m_DataBase.GetSqlStringCommand(tmpSQL));
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + "_Exp.log";
LogWriter.Writer(directory, fileName, text);
} /// <summary>
/// 针对多线程的应用程序写日志
/// </summary>
/// <param name="text"></param>
public static void Write(string text)
{
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + ".log";
LogWriter.Writer(directory, fileName, text); }
public static void WriteExp(string text)
{
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + "_Exp.log";
LogWriter.Writer(directory, fileName, text);
}
public static void WriteDug(string text)
{
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + "_Dug.log";
LogWriter.Writer(directory, fileName, text);
}
/// <summary>
///
/// </summary>
/// <param name="e"></param>
public static void WriteExp(System.Exception e)
{
WriteExp(e.Message + "\r\n" + e.StackTrace);
}
public static void WriteTest(string text)
{
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + "_test.log";
LogWriter.Writer(directory, fileName, text);
}
public static void WriteKeeper(string text, string keepersn)
{
string directory = GetFullDirectory();
string fileName = keepersn + ".log";
LogWriter.Writer(directory, fileName, text);
} /// <summary>
/// 针对单线程的应用程序写日志
/// </summary>
/// <param name="text"></param>
public static void STWrite(string text)
{
string directory = GetFullDirectory();
string fileName = programName + ".log";
LogWriter.Writer(directory, fileName, text);
}
public static void STWriteExp(string text)
{
string directory = GetFullDirectory();
string fileName = programName + "_Exp.log";
LogWriter.Writer(directory, fileName, text);
}
public static void STWrite(string filePrefixName, string text)
{
string directory = GetFullDirectory();
string fileName = filePrefixName + ".log";
LogWriter.Writer(directory, fileName, text);
}
public static void STWriteExp(string filePrefixName, string text)
{
string directory = GetFullDirectory();
string fileName = filePrefixName + "_Exp.log";
LogWriter.Writer(directory, fileName, text);
} private static string GetFullDirectory()
{
return LogDirectory + "\\"
+ DateTime.Now.ToString("yyyy-MM") + "\\" + DateTime.Now.Day.ToString()
+ "\\" + programName;
}
 internal class LogWriter
{ public LogWriter()
{ } [MethodImpl(MethodImplOptions.Synchronized)]
public static void Writer(string directory, string fileName, string text)
{
CheckDirectory(directory);
using (StreamWriter sw = new StreamWriter(directory + "\\" + fileName, true, Encoding.UTF8))
{
sw.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss "));
sw.WriteLine(" " + text);
sw.WriteLine("-------------------------------------------");
}
}
private static void CheckDirectory(string directory)
{
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
}
}

以上是两个类库的代码。在程序中使用:

 LogProxy.WriteExp("Come in ");

C#通用类库整理--日志记录的更多相关文章

  1. 【C#通用类】日志记录类

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  2. C#通用类库整理--字符串处理类

    在程序开发中通常需要将字符串转为自己想要的结果,以下三个类库主要实现: 1.GetStrArray(string str, char speater, bool toLower)  把字符串按照分隔符 ...

  3. C#通用类库整理--序列化类

    程序员在编写应用程序的时候往往要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上 以实现通讯.这个将程序数据转化成能被存储并传输的格式的过程被称为"序列 ...

  4. C# 面向切面编程--监控日志记录方案

    背景:现在公司整体在做监控平台,要求把各个部分的细节都记录下来,在前台页面上有所显示,所以现在需要做的就是一个监控日志的记录工作,今天讲的就是渲染监控日志的例子. 现状:当前的渲染程序没有为监控日志记 ...

  5. 日志记录类库log4net的使用总结

    log4net是一个开源的日志记录类库,经过配置后可以自动抓取程序中的错误.异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作,比如:通知某人右键.写入数据库等.这里写个ASP.NET MVC ...

  6. 类库里面添加日志记录 log4net

    第一步: 新建一个公共类库common,添加CustomLog4jLogger.cs 并引用log4net.dll /// <summary> /// 日志记录 /// </summ ...

  7. JAVA实现通用日志记录

    原文:http://blog.csdn.net/jinzhencs/article/details/51882751 前言: 之前想在filter层直接过滤httpServerletRequest请求 ...

  8. 【个人使用.Net类库】(2)Log日志记录类

    开发接口程序时,要保证程序稳定运行就要时刻监控接口程序发送和接收的数据,这就需要一个日志记录的类将需要的信息记录在日志文件中,便于自己维护接口程序.(Web系统也是如此,只是对应的日志实现比这个要复杂 ...

  9. 【干货】.NET开发通用组件发布(四) 日志记录组件

    组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 日志记录组件功能介绍 通过基类Logger,实现了文本记录日志和数据库记录日志两 ...

随机推荐

  1. 0312 java接口测试三棱军刺rest-assured

    背景 java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢? ...

  2. linux4.1.36 解决 SPI 时钟找不到 不生成设备 device

    最初的问题是 编译内核添加了 spi 支持,配置了 board 后,加载25q64驱动不执行probe 函数. 然后发现是,spi-s3c24xx.c 中的 probe 没有执行完就退出了 没有生成 ...

  3. 写一个scrapy中间件--ip代理池

    middleware文件 # -*- coding: utf-8 -*- # Define here the models for your spider middleware # See docum ...

  4. springboot项目中thymeleaf布局应用

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  5. 深入理解JS引擎的执行机制

    深入理解JS引擎的执行机制 1.灵魂三问 : JS为什么是单线程的? 为什么需要异步? 单线程又是如何实现异步的呢? 2.JS中的event loop(1) 3.JS中的event loop(2) 4 ...

  6. ASP.net MVC 构建layui管理后台(构造基础仓储)<1>

    本文章为ASP.net MVC 构建layui管理后台,第一篇. 使用EF+ado.net 实体数据模型模式进行底层的数据库连接. 在项目添加一个类库Model 在类库Model上添加一个ado.ne ...

  7. 031.核心组件-kubelet

    一 kubelet概述 1.1 kubelet作用 在Kubernetes集群中,在每个Node(又称Minion)上都会启动一个kubelet服务进程.该进程用于处理Master下发到本节点的任务, ...

  8. vscode配置里关于 eslint配置不要有 "eslint.alwaysShowStatus": true

    "eslint.autoFixOnSave": true, "eslint.validate": [ "javascript", " ...

  9. Ext.grid rowexpander的展开与收缩

    这里写Ext.grid.Panel的展开与收缩. 1. 确保在grid存在rowexpander对象: plugins: [{ ptype: 'rowexpander', rowBodyTpl: [' ...

  10. H5新特性之语义化标签

    一.为什么要增加新的语义化标签 在HTML 5出来之前,我们用div来表示章节,但是这些div都没有实际意义,这样的布局方式使我们的结构不够清晰,于是语义化标签应运而生. 二.何为语义化标签 顾名思义 ...