当前位置:  软件>C/C++软件

log 打印和分析工具 mylog

    来源:    发布时间:2015-01-02

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

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

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • docker源码分析之容器日志处理与log-driver实现
  • /var/logs/下的message文件是干嘛用的?能用于分析系统异常情况吗?
  • apache中使用mod_log_slow分析响应慢的请求
  • 使用python分析git log日志示例
  • 使用Log4j为项目配置日志输出应用详解以及示例演示的实现分析
  • java命名空间java.util.logging类logger的类成员方法: log定义及介绍
  • Android开发笔记之:Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
  • java命名空间java.util.logging类logmanager的类成员方法: logging_mxbean_name定义及介绍
  • Red Hat无法登录,Cannot open log file "/var/log/Xorg.0.log"
  • java命名空间javax.swing类debuggraphics的类成员方法: log_option定义及介绍
  • 找不到/var/log/vsftpd.log?
  • java命名空间java.lang类strictmath的类成员方法: log定义及介绍
  • log4j的c++移植版 log4cxx
  • java命名空间java.lang类math的类成员方法: log定义及介绍
  • log4j 的 Qt 移植 log4qt
  • java命名空间java.lang类strictmath的类成员方法: log1p定义及介绍
  • C++版的log4j log4cplus
  • java命名空间java.util.logging类handler的类成员方法: flush定义及介绍
  • 使用log4j生成的.log文件,前缀中是不是必须含有当日日期?
  • java命名空间java.util.logging类level的类成员方法: finest定义及介绍
  • tail -f run.log 导致 tail: run.log: file truncated
  • java命名空间java.util.logging类memoryhandler的类成员方法: memoryhandler定义及介绍
  • 一个log4j的问题:我能不能根据level的不同定义不同的输出对象,比如不同的log文件
  • java命名空间java.lang类strictmath的类成员方法: log10定义及介绍
  • Tomcat access log记录到mongo的插件 Tomcat Mongo Access Log Valve
  • java命名空间java.util.logging类memoryhandler的类成员方法: push定义及介绍
  • android轻松管理安卓应用中的log日志 发布应用时log日志全部去掉的方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3