logger 嘛要高效,要简单。废话不多话。

GitHub 地址 https://github.com/goldli/logger

本文所说的logger使用System.Logger做为NameSpace;

一、对象说明
    Dll里logger共有两类对象
    1、Logger 日志输出控件类。负责启用与停用日志功能。
    2、Log 日志记录类。
    
二、启用/停用日志
    Logger.Instance.Start();
    Logger.Instance.Stop().Dispose();
    
    Logger本身继承自 IDisposable 接口。在Stop后可以调用Dispose来释放资源。
    
三、记录日志
    需要实例化一个Log对象:使用Logger.Instance.GetLog("日志文件夹名称");
    记录日志的方法
    1、普通写法 WriteLog("日志内容");
    2、带有顺序序号的方式 Write("日志内容",起始顺序号);
    若 起始顺序号为 0 ,则Log内容会进行 +1 处理。
    若 起始顺序号不为 0 ,则Write方法以此顺序号开始进行 +1 处理
    
四、日志目录结构
    Log类本身有Folder属性与FileName属性
    Folder可以用于指写日志保存的位置,若为指定则与当前调用的主程序exe同目录下的log目录.
    FileName不是日志文件名称。而是日志文件所在的文件夹名称。具体的日志文件是以小时来命名的。
    最终文件目录结构为
    x:\log\{FileName}\{yyyy-MM-dd}\{hh}.log
    或
    x:\{FileName}\{yyyy-MM-dd}\{hh}.log
    
五、示例
    1、普通示例,请参考
    2、多线程示例
    2.1声明Logger对象
        internal Logger Logger = Logger.Instance;
        
    2.2将Logger传入线程对象
            var task1 = new task
            {
                Config = config,
                Logger = Logger
            };
    2.3创建线程
        Logger.Start();
        _patrolor = new Thread(Tick){IsBackground = true};
        _patrolor.Start(task1);
    2.4 在线程中创建Log
        class Task
        {
            protected override void Execute(Task task)
            {
                _logger = task.Logger.GetLog("AlertService");
                _logger.WriteLog("begin");
                Do(task);
                _logger.WriteLog("end");
            }
        }
六、注意事项
    在线程处理过程中,我们会用于各种数据。一定要记住的是 线程处理过程中使用的数据是从object state参数传入进行来。而非来自于处理过程所在的类

简化版可用于多线程的logger的更多相关文章

  1. QThread 与 QObject的关系(QObject可以用于多线程,可以发送信号调用存在于其他线程的slot函数,但GUI类不可重入)

    QThread 继承 QObject..它可以发送started和finished信号,也提供了一些slot函数. QObject.可以用于多线程,可以发送信号调用存在于其他线程的slot函数,也可以 ...

  2. 多线程中的event,用于多线程的协调

    ''' 简单的需求:红绿灯,红灯停,绿灯行 一个线程扮演红绿灯,每过一段时间灯变化,3-5个线程扮演车,红灯停,绿灯行 红绿灯线程和车的线程会相互依赖 这种场景怎么实现?---事件 切换一次灯就是一次 ...

  3. Java多线程整理(li)

    目录: 1.volatile变量 2.Java并发编程学习 3.CountDownLatch用法 4.CyclicBarrier使用 5.BlockingQueue使用 6.任务执行器Executor ...

  4. windows多线程编程(一)(转)

    源出处:http://www.cnblogs.com/TenosDoIt/archive/2013/04/15/3022036.html CreateThread:Windows的API函数(SDK函 ...

  5. android Logger 一二三

    我们在开发Android应用的过程中可以很方便地使用Log信息来调试程序,这都归功于Android的Logger驱动为用户层提供的Log支持.无论是底层的源代码还是上层的应用,我们都可以使用Logge ...

  6. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  7. java多线程--同步屏障CyclicBarrier的使用

    CyclicBarrier的概念理解: CyclicBarrier的字面上的意思是可循环的屏障,是java并发包java.util.concurrent 里的一个同步工具类,在我下载的JDK1.6的中 ...

  8. Java—多线程编程

    一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程.一个线程不能独立的存 ...

  9. C#多线程总结

    线程的创建 Thread var thread = new Thread(() => { Console.WriteLine("thread start:" + Thread ...

随机推荐

  1. POJ 3744 Scout YYF I (概率dp+矩阵快速幂)

    题意: 一条路上,给出n地雷的位置,人起始位置在1,向前走一步的概率p,走两步的概率1-p,踩到地雷就死了,求安全通过这条路的概率. 分析: 如果不考虑地雷的情况,dp[i],表示到达i位置的概率,d ...

  2. hdu1792 水题

    最近转到vim上来了,用vim编写代码,用gcc编译,用gdb调试.这是用vim做的第一道题,纪念下.题目很水,就不说了. /* * Author : ben */ #include <cstd ...

  3. 数据库表中MAX ID获取,确保每次调用没有重复工具类(NumberUtil)

    下面这个类是获取数据库中一个字段的最大值.配置在数据库中. public class NoFactory { private final static Logger cLogger = Logger. ...

  4. [CODEVS2603]公路修建

    题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成.    修建工程分若干轮完成.在每一轮中,每个城市选 ...

  5. bzoj 2393 Cirno的完美算数教室(容斥原理+搜索)

    [题意] 定义C数为只包含数字2和9的数,求[L,R]内能被C数整除的个数. [思路] Dfs预处理出C数,并去除其中倍数的情况. Dfs搜索出现情况,奇数加,偶数减,当数值大于R时剪枝. [代码] ...

  6. PHP命名规范【转】

      [转]谭博的个人网站 [类] 1.类名与类文件名采用驼峰式且首字母大写 2.类私有属性和私有方法名称以下划线开头 3.方法名使用驼峰式 [变量] 变量名使用小写字母加下划线 [函数] 函数名使用小 ...

  7. libpcap/wwinpcap

    winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统.开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力.win ...

  8. CodeForces 689E Mike and Geometry Problem (离散化+组合数)

    Mike and Geometry Problem 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/I Description M ...

  9. How to include cascading style sheets (CSS) in JSF

    In JSF 2.0, you can use <h:outputStylesheet /> output a css file. For example, <h:outputSty ...

  10. [iOS基础控件 - 6.9.4] 抓取网页图片资源

    A.需求 1.利用浏览器取得网页的源码 2.解析源码,获取图片地址(这里使用了java的一个库来解析html) 3.获取资源,生成plist目录   B.实现步骤 1.打开一个网页,最好里面是包含了静 ...