log 打印和分析工具 mylog

GPL
C/C++
跨平台
2013-12-15
jungleliu0923

mylog 是一个多线程安全、高效、易用性很强的 C/C++ 库 .只需要一个初始化日志目录以及文件名,你就可以像使用 printf 一样的去打印日志。通过日志可以定位(多线程)请求 ip, logid,执行时间等。

1 说明
1) 本文件夹包含源码src以及示例文件sample
2) 编译src生成output(包括iånclude和lib)
3) 使用output的lib和include,具体可以查看sample的Makefile和code
4) 日志级别为FATAL, WARNING, NOTICE, TRACE, DEBUG,以此级别变低
5) 使用MY_LOG_FATAL等打印日志,和printf使用方式类似,非常简单。

2 使用API(查看mylog.h)

1) 初始化日志目录

my_log_init(const char* log_path, const char* normal_path, const char* warn_fatal_path, const int log_level) 

log_path : log路径 normal_path : 正常日志目录 warn_fatal_path : 异常日志目录 log_level : 日志级别

2) 初始化线程日志数据

  my_log_thread_init() 

多线程使用

3) 设置一个线程的logid

my_log_set_logid(logid) 

必须在my_log_thread_init() 之后使用。

4) 设置一个线程的reqip 

my_log_set_reqip(reqip) 

必须在my_log_thread_init() 之后使用.

5) 设置一个线程的reqip

my_log_set_mod(mod) 

设置一个线程的reqip, 必须在单线程中使用或者my_log_thread_init() 之后使用.

6)设置计算执行时间的类型(打印时间是ms还是us)

 my_log_set_time_type(time_type) 

必须在单线程中使用或者my_log_thread_init() 之后使用.

7) 打印FATAL日志

MY_LOG_FATAL(logfmt, arg...) 

日记级别 >=1会打印 FATAL日志。

8)打印WARNNING日志

MY_LOG_WARNING(logfmt, arg...) 

日记级别 >=2会打印 WARNING日志。

9) 打印NOTICE日志

MY_LOG_NOTICE(logfmt, arg...) 

日记级别 >=4会打印 NOTICE日志。

10)打印TRACE日志

MY_LOG_TRACE(logfmt, arg...) 

日记级别 >=8会打印TRACE日志。

11) 打印DEBUG日志

MY_LOG_DEBUG(logfmt, arg...) 

日记级别 >=16会打印DEBUG日志。

3 范例

1) code

 

#include "mylog.h"


void* test_thread1(void*)
{
    my_log_thread_init();
    my_log_set_reqip("10.10.10.31");
    my_log_set_time_type(TIME_TYPE_MSEC);
    for(int i=0; i<100; i++)
    {
        my_log_set_logid(i);
        MY_LOG_FATAL("thread 1 fatal is at %d, it's %s", i , "OK");
        MY_LOG_WARNNING("thread 1 warning is at %d, it's %s", i , "OK");
        MY_LOG_NOTICE("thread 1 notice is at %d, it's %s", i , "OK");
        MY_LOG_TRACE("thread 1 trace is at %d, it's %s", i , "OK");
        MY_LOG_DEBUG("thread 1 debug is at %d, it's %s", i , "OK");
        sleep(1);
    
    }
}


void* test_thread2(void*)
{
    my_log_thread_init();
    for(int i=0; i<3; i++)
    {
        my_log_set_mod("test2");
        MY_LOG_FATAL("thread 2 fatal is at %d, it's %s", i , "OK");
        MY_LOG_WARNNING("thread 2 warning is at %d, it's %s", i , "OK");
        MY_LOG_NOTICE("thread 2 notice is at %d, it's %s", i , "OK");
        MY_LOG_TRACE("thread 2 trace is at %d, it's %s", i , "OK");
        MY_LOG_DEBUG("thread 2 debug is at %d, it's %s", i , "OK");
        sleep(1);
    }
}


int main()
{
    my_log_init(".", "test.log", "test.log.wf", 16);
    MY_LOG_DEBUG("main begin");


    pthread_t t1, t2;
    pthread_create(&t1, NULL, test_thread1, NULL);
    pthread_create(&t2, NULL, test_thread2, NULL);


    pthread_join(t1, NULL);
    pthread_join(t2, NULL);
    MY_LOG_DEBUG("main end");
}

 

 

 

2)运行结果

加载中

评论(0)

暂无评论

暂无资讯

暂无问答

初入OC-定时器

#import "MyTimer.h" @interface MyTimer(){ NSTimer *timer1; NSTimer *timer2; } @end @implementation MyTimer -(void)testTimer{ // 1 参数1 中断间隔 参数2 响应方法对象 参数3 响应方法...

10/30 00:38
0
0
不直接用NSLog

公司中不直接使用NSLog,而是利用宏定义自己的打印函数,将该打印函数写在项目的.pch文件中.调试的时候往往用到好多打印,但发布的时候确不需要.(一下是在公司中的一些处理)

2014/12/21 12:44
1K
0
git push

使用coding.net协作开发时遇到了些git push的问题,以下纪录正确push到指定分支的方法

2016/04/16 15:04
5
1
加密CMD使电脑溢出也拿不到CMD权限

加密CMD使电脑溢出也拿不到CMD权限 以下是lock.bat文件 @echo off title 密码验证 SETLOCAL set pwd=0 set times=3 echo ________________________________________________________________...

2016/06/20 09:37
1
0
SpringAop进行日志管理。

在java开发中日志的管理有很多种。我一般会使用过滤器,或者是Spring的拦截器进行日志的处理。如果是用过滤器比较简单,只要对所有的.do提交进行拦截,然后获取action的提交路径就可以获取对...

2016/02/29 17:21
6
1
Runtime机制封装数据库

Runtime功能还是十分强大的,很多人对于它的具体作用都不是很清晰,其实个人感觉Runtime就是用来开发OC的,而并不能说它单纯的知识OC的’幕后工作者‘,这几天一直在找工作,闲着没事用运行时...

2016/01/23 21:51
3
1
Android基础学习(11)-程序调试及代码段

一、try...catch...finally错误处理: package com.wwtiot.ozee5; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; im...

2014/09/26 22:38
74
0
log4j基本配置属性详解

### 详细说明(只针对Log4j常用的,用户可以自定义)Appender   Appender继承关系   Appender基本种类 org.apache.log4j.ConsoleAppender(控制台)   org.apache.log4j.FileAppender...

2016/10/14 10:39
3
0
java的几个日志框架log4j、logback、common-logging

开发工作中每个系统都需要记录日志,常见的日志工具有log4j(用的最多),slf4j,commons-loging,以及最近比较流行的logback 以前只是在项目中用log4j,更多的是参考下配置文档,没有对日志系统做过...

2014/05/14 09:20
168
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部