分享一个简单的日志记录静态类

LanceZhang.Common.Log静态类

作用:

日志记录

适用情景:

一般日志记录,以及Windows Service、Web Service等部署后难以调试的应用程序。

主要输出:

文件系统IO

方法:

1. Output(string)

用于普通日志记录,记录的信息将在程序目录下根据日期建立文本文件“log_20090408.txt”

并在该文本文件中追加要输出的普通日志信息:

 

2.OutputError(string)

用于错误日志输出,与Output方法类似,不但输出日志信息,还输出当前的文件名、行、列号以及当前执行的方法名,以便进行分析。

如:

 

复制代码
    try
    {
        
int i = 8;
        
int j = 0;
        
int c = i / j;
    }
    
catch (Exception ex)
    {
        Log.OutputError(ex.Message);
    }
复制代码

 

输出:

 

 

代码: 

 

复制代码
/****************************** Module Header ******************************
* Module Name:    Log.cs
* Project:    LanceZhang.Common
* Copyright (c) Lance Zhang (blodfox777@hotmail.com)

* History:
* * 3/7/2009 2:50 Lance Zhang Created
**************************************************************************
*/


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;

namespace LanceZhang.Common
{
    
public static class Log
    
{
        
private static object lockobj=new object();

        
private static void WriteToFile(string filename, string content)
        
{
            
using (StreamWriter sw = new StreamWriter(filename, true))
            
{
                sw.WriteLine(content);
                sw.Close();
            }

        }


        
private static string GetDateTime()
        
{
            
return "[" + DateTime.Now.ToString("HH:mm:ss"+ "";
        }


        
public static void Output(string msg)
        
{
            
lock (lockobj)
            
{
                Log.WriteToFile(Directory.GetCurrentDirectory()
+ @"\log_" + DateTime.Now.ToString("yyyyMMdd"+ ".txt", GetDateTime() + msg);
            }

        }


        
public static void OutputError(string msg)
        
{
            
lock (lockobj)
            
{
                StackFrame sf 
= new StackTrace(true).GetFrame(1);
                StringBuilder sb 
= new StringBuilder(GetDateTime());
                sb.Append(
"ERROR:");
                sb.AppendLine(msg);
                sb.AppendLine(
"Error from:");
                sb.AppendLine(sf.GetFileName());
                sb.Append(
"Line:");
                sb.AppendLine(sf.GetFileLineNumber().ToString());
                sb.Append(
"Column:");
                sb.AppendLine(sf.GetFileColumnNumber().ToString());
                sb.Append(
"Method:");
                sb.Append(sf.GetMethod().Name);
                Log.WriteToFile(Directory.GetCurrentDirectory() 
+ @"\log_" + DateTime.Now.ToString("yyyyMMdd"+ ".txt",  sb.ToString());
            }

        }

    }

}

复制代码

 

posted @   LanceZhang  阅读(1443)  评论(3编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示