Skip to content

yksz/c-logger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

C logger

Table of Contents

What is this?

This is a simple logging library for C/C++.

This library's main features:

  • Lightweight - only 500-line source code
  • C89 support
  • Thread-safe
  • 2 logging types:
    • Console logging
    • File logging rotated by file size
  • Custom with a configuration file

Installation

./build.sh
cd build
make
sudo make install

or

build.bat

or

Copy files in src directory to your project

Platform

  • Windows (Visual Studio 2008+)
  • Mac OS X (clang 3.6+)
  • Linux (gcc 4.8.4+)

Note: Operations are confirmed on the above platforms

Benchmark

This following table comparing other libraries is benchmark results to log 1,000,000 times.

threads c-logger glog
1 0.832s 1.267s
10 1.386s 1.183s

Benchmark environment

  • Processor: Intel Core i3-4170 CPU @ 3.70GHz
  • Memory: 8.0GB
  • OS: Ubuntu 16.04 64bit

Log format

level yy-MM-dd hh:mm:ss:uuuuuu threadid file:line: message

Example

Console logging

logger_initConsoleLogger(stderr);
logger_setLevel(LogLevel_DEBUG);
LOG_INFO("console logging");

File logging

logger_initFileLogger("logs/log.txt", 1024 * 1024, 5);
logger_setLevel(LogLevel_DEBUG);
LOG_INFO("file logging");
LOG_DEBUG("format example: %d%c%s", 1, '2', "3");

The output of the file logger is the following:

I 15-11-10 00:32:43.771455 2854 filelogger.c:6: file logging
D 15-11-10 00:32:43.771564 2854 filelogger.c:7: format example: 123

Multi logging

logger_initConsoleLogger(NULL);
logger_initFileLogger("logs/log.txt", 0, 0);
LOG_INFO("multi logging");

License

The MIT license