Open-source pure C log function library ilog3 Quick Start (8. If you prefer simple log function library than log function library)
Many netizens insisted that simple log functions should be used in the project, but they do not like log function libraries. I have no choice but to argue with them over and over again. I also like short and brisk log function libraries, instead of using a bloated library with too many functions, for example, I still insist on using an external shell to achieve better, such a log function library can be much smaller, it can be more brisk and stable, I have added too many features due to the "threat" of another group of functional control netizens. They like an extreme package of solutions, in addition, it is proved that other functions such as log4c are correct because they are also implemented.
Recently, I was developing a small application server platform tcpdaemon, which requires the log function, but the entire tcpdaemon code is very small, much smaller than ilog3, so I thought of the top netizens, after repeated consideration, I decided to add a little ghost spirit to my ilog3-a simple log function with a single mini-type, so that everyone can finally satisfy it.
Src/Add logc. h, logc. c. These two source files are not compiled into libilog3.so, but independently provided by friends who like simple log functions and dislike the log function library separately to their projects for direct source code inclusion. For example, tcpdaemon Project
tcpdaemon-1.1.0/ src/ tcpdaemon.h main.c tcpdaemon.c worker.c LOGC.h LOGC.c ...
There is a test case test_logc.c in the test directory of ilog3.
#include "../src/LOGC.h"int test_logc(){ char buf[ 64 + 1 ] ; long buflen ; SetLogFile( "%s/log/test_logc.log" , getenv("HOME") ); SetLogLevel( LOGLEVEL_INFO ); DebugLog( __FILE__ , __LINE__ , "call DebugLog" ); InfoLog( __FILE__ , __LINE__ , "call InfoLog" ); WarnLog( __FILE__ , __LINE__ , "call WarnLog" ); ErrorLog( __FILE__ , __LINE__ , "call ErrorLog" ); FatalLog( __FILE__ , __LINE__ , "call FatalLog" ); memset( buf , 0x00 , sizeof(buf) ); buflen = sizeof(buf) - 1 ; DebugHexLog( __FILE__ , __LINE__ , buf , buflen , "call DebugHexLog" ); InfoHexLog( __FILE__ , __LINE__ , buf , buflen , "call InfoHexLog" ); WarnHexLog( __FILE__ , __LINE__ , buf , buflen , "call WarnHexLog" ); ErrorHexLog( __FILE__ , __LINE__ , buf , buflen , "call ErrorHexLog" ); FatalHexLog( __FILE__ , __LINE__ , buf , buflen , "call FatalHexLog" ); return 0;}int main(){ return -test_logc();}
During compilation, you only need to compile the logc. C link together.
$ gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -I. -c test_logc.c$ gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -I. -c ../src/LOGC.c$ gcc -g -fPIC -O2 -Wall -Werror -fno-strict-aliasing -o test_logc test_logc.o LOGC.o -lpthread$ ./test_logc$ cat $HOME/log/test_logc.log2014-07-20 22:35:12.890000 | INFO | 1556:3284:test_logc.c:12 | call InfoLog2014-07-20 22:35:12.906000 | WARN | 1556:3284:test_logc.c:13 | call WarnLog2014-07-20 22:35:12.906000 | ERROR | 1556:3284:test_logc.c:14 | call ErrorLog2014-07-20 22:35:12.906000 | FATAL | 1556:3284:test_logc.c:15 | call FatalLog2014-07-20 22:35:12.906000 | INFO | 1556:3284:test_logc.c:20 | call InfoHexLog 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF0x00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................2014-07-20 22:35:12.906000 | WARN | 1556:3284:test_logc.c:21 | call WarnHexLog 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF0x00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................2014-07-20 22:35:12.906000 | ERROR | 1556:3284:test_logc.c:22 | call ErrorHexLog 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF0x00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................2014-07-20 22:35:12.906000 | FATAL | 1556:3284:test_logc.c:23 | call FatalHexLog 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF0x00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................0x00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Is it easy? Download and play.
Home Portal: [url] http://git.oschina.net/calvinwilliam ams/ilog3#/url]
The source code package doc directory contains the user guide and reference manual, which provides more detailed instructions.