LogHelper 日志记录帮助类

1、LogHelper 日志记录帮助类

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

namespace Weixin.Utils
{
    public enum LogType
    {
        Overall,
    }

    public class LogHelper
    {
        public static string LogPath
        {
            get
            {
                return AppDomain.CurrentDomain.BaseDirectory+@"\log";
            }
        }

        public enum LogLevel
        {
            Info,
            Error
        }

        public static void Info(string message, LogType logType = LogType.Overall)
        {
            if (string.IsNullOrEmpty(message))
                return;
            var path = string.Format(@"\{0}\", logType.ToString());
            WriteLog(path, "", message);
        }

        public static void Error(string message, LogType logType = LogType.Overall)
        {
            if (string.IsNullOrEmpty(message))
                return;
            var path = string.Format(@"\{0}\", logType.ToString());
            WriteLog(path, "Error ", message);
        }

        public static void Error(Exception e, LogType logType = LogType.Overall)
        {
            if (e == null)
                return;
            var path = string.Format(@"\{0}\", logType.ToString());
            WriteLog(path, "Error ", e.Message);
        }

        private static void WriteLog(string path, string prefix, string message)
        {
            path = LogPath + path;
            var fileName = string.Format("{0}{1}.log", prefix, DateTime.Now.ToString("yyyyMMdd"));

            if (!Directory.Exists(path))
                Directory.CreateDirectory(path);

            using (FileStream fs = new FileStream(path + fileName, FileMode.Append, FileAccess.Write,
                                                  FileShare.Write, 1024, FileOptions.Asynchronous))
            {
                byte[] buffer = System.Text.Encoding.UTF8.GetBytes(DateTime.Now.ToString("HH:mm:ss") + " " + message + "\r\n");
                IAsyncResult writeResult = fs.BeginWrite(buffer, 0, buffer.Length,
                    (asyncResult) =>
                    {
                        var fStream = (FileStream)asyncResult.AsyncState;
                        fStream.EndWrite(asyncResult);
                    },

                    fs);
                fs.Close();
            }
        }
    }
}

 

2、帮助类使用

 var msg = "日志文本信息";
  LogHelper.Info(msg);

 

时间: 2024-09-24 13:12:15

LogHelper 日志记录帮助类的相关文章

php之框架增加日志记录功能类

<?php /* 思路:给定文件,写入读取(fopen ,fwrite--) 如果大于1M 则重写备份 传给一个内容, 判断大小,如果大于1M,备份 小于则写入 */ class Log{ //定义一个常量,创建一个文件的名称 const LOGFILE = 'curr.log'; //写入文件 public static function write($cont){ $cont .="\r\n"; $log = self::isBak(); //计算文件的地址,判断大小 $fh

C++日志记录类实例解析_C 语言

本文所述实例是从一个Red Hat开源项目里面扒出来的,非常实用!读者还可以根据自身需求加以修改!完整源码如下: Log.h文件部分: #ifndef __LOG_H__ #define __LOG_H__ #include <stdio.h> #include <tchar.h> #include <crtdbg.h> #include <windows.h> #include <time.h> #include <sys/timeb.h

一个多线程的日志记录DLL

日志记录对于应用程序来说是很重要的.本文就简单实现的实现了这样一个模块.该模块实现对程序预期的信息进行记录的功能.该模块为每一个向它进行注册的模块开启一个线程并同时创建或者打开一个同名但扩展名为.log的文本文件,此文件位于程序可执行文件目录下的/Log子目录下.这样也具有了一定的灵活性,比如可以再Debug版本中用此库输出调试信息到文件,而在Release版本中真正用于记录日志信息. 下面对其中的两个类的接口介绍一下: CInfoReport: 该类在实现时已经用AFX_EXT_CLASS关键

工厂方法模式实现多功能日志记录

有时,我们在开发的时候,会遇到一些关于日志记录的功能.并且,它们可能是独立于系统业务逻辑的,那么我们就可以将日志做成组件的形式,以方便复用. 以下采用工厂方法模式,来实现日志组件的设计,并保证对功能的扩展不会改变已有的实现. 我们实现三种日志记录类型:错误日志记录.按钮点击日志记录.操作日志记录. 首先,我们创建一个"抽象工厂"[其实是各实例工厂都必须实现的Log接口],既然是日志记录,那么就需要有日志的实体了.也就是LogEntity,它是一个"抽象实体",因为不

【原创】modb 功能设计之“支持对sql语句的相关日志记录”

[需求分析] 终于到了处理 sql 日志的阶段了,万里长征重点的关键一步. 需要考虑解决的问题点如下:  在哪个模块上做 sql 日志记录 都要记录哪些信息才能做到跨机房数据同步时,具有可查询.可分析.可监控的目的 sql 日志记录的模式或者说频率 针对 MoDB 要做跨机房数据的同步这个功能,那么可以对 sql 语句进行记录的"地方"有:  modb 应用中 Atlas 应用中 其中 Atlas 目前已支持 sql 日志的记录,格式如下:  ? 1 [11/25/2013 14:58

关于细粒度系统操作日志记录问题

问题描述 首先说明,是在系统设计初期. 要记录系统中的操作日志,要求的粒度比较细,比如 用户 张三 取消了订单号为001的订单. 又比如:管理员审核通过李四的认证. 还有一个要求就是指定模块记录日志,有的要记,有的不记,还要可配. 开始的时候想过用aop去做日志的记录,可做demo的时候发现无法拦截到某个对象的变量值,比如订单的订单号:还有一个难处就是操作描述的内容拼接的问题,因为要记录的是各个模块中不同的操作,这个操作描述实在头疼. 我现在暂时的思路是就直接写一个接口,让需要记录日志的方法调用

《DNS与BIND(第5版)》——7.5 日志记录

7.5 日志记录 BIND支持扩展的日志记录(logging),包括将信息写入调试文件和发送至syslog.不过,使用扩展的日志记录是有代价的:在能够有效地控制该子系统前,必须要学习很多知识.如果没有时间来实验日志记录,那么就先使用默认值,等以后有空再来研究这个主题.大部分人并不需要更改日志记录的默认行为. 日志记录有两个主要的概念:通道(channels)和类别(categories).通道用来指定日志数据的流向:syslog.文件.named的标准错误输出或是bit bucket.类别用来指

《日志管理与分析权威指南》一2.3 良好日志记录的标准

2.3 良好日志记录的标准 正如这本书中各式例子所示,许多情况下日志记录的信息是不完整的,有时甚至是没用的.那么怎样才算是"良好"的日志呢?对入侵检测.资源管理或审计来说,日志消息必须包含哪些必要的信息?由于日志的种类很多,生成日志的设备更是多种多样,因此很难定义单一的标准. 通常来说,日志应该能够告诉你如下信息: 发生了什么(即What,辅以适当细节信息:单纯的"某事发生"通常并不是特别有用) 发生于何时(即When,若有必要,包含开始时间以及结束时间) 发生于何

.net jMail邮件发送(含抄送、密送、多发、日志记录)实例代码_实用技巧

jmail是一个第三方邮件操作组件,通常位于web服务器端,实现收邮件及发邮件功能(客户端用Foxmail这类就很好了).可以利用它轻松实现发邮件.抄送.密送.多发.日志记录及收邮件功能.本章要讲的,就是:发邮件.抄送.密送.多发.日志记录. 一.组件准备下载JMail44_pro并安装(记下安装路径) 找到安装路径,将其中的jmail.dll复制到项目中 二.核心发送代码新建MailAPI.cs,并输入以下代码 复制代码 代码如下: using System;using System.Coll