# C语言日志库logging
[English](README.en.md)
## 简介
logging是一个轻量级的简单易用C语言日志库,支持日志级别、日志格式、日志输出、日志文件等功能。
## 功能
- 支持日志级别:DEBUG、INFO、WARN、ERROR、FATAL
- 支持日志格式:时间戳、日志级别、日志内容
- 支持日志输出:控制台、文件
- 支持日志文件:自动创建、自动滚动、日志分割
## 安装
### conan安装使用
```shell
git clone https://github.com/WangZhongDian/logging.git
cd logging
conan create .
```
在你的项目的conanfile.txt中添加
```txt
[requires]
logging/0.5.0
```
```shell
conan install . --build=missing
```
### cmake安装使用
```shell
git clone https://github.com/WangZhongDian/logging.git
cd logging
cmake build -B build . && cd build && cmake --build .
cmake --install .
```
## 使用方法
![](docs/img/2024-09-21-11-44-25.png)
![](docs/img/2024-09-21-11-44-06.png)
### 控制台日志
```c
#include "logging.h"
int main() {
Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG);
log_info("This is an info message");
log_error("This is an error message%s", "123");
log_fatal("This is an fatal message");
log_debug("This is a debug message");
log_warning("This is a warning message%s", "123");
destroyDefaultLogger();
return 0;
}
```
### 文件日志
```c
#include "logging.h"
#include "logging/logging-handler.h"
int main() {
Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG);
logger->addHandler(loggingHandlerFile("test1", 1024*1024));
log_info("This is an info message");
log_error("This is an error message%s", "123");
log_fatal("This is an fatal message");
log_debug("This is a debug message");
log_warning("This is a warning message%s", "123");
destroyDefaultLogger();
return 0;
}
```
### 日志过滤器
> 支持添加自定义的过滤器, 目前内置了子串过滤器
> 过滤器的作用:可以将过滤到的日志重定向到过滤器的专属处理器中
#### 单个子串过滤器
将过滤到的日志重定向到专属处理器中
```c
#include "logging.h"
#include <stdio.h>
int main() {
Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG);
log_info("This is an info message");
log_error("This is an error message%s", "123");
log_fatal("This is an fatal message");
log_debug("This is a debug message");
log_warning("This is a warning message%s", "123");
char *test1[] = {"123", "tt", NULL};
log_filter *tint = loggingFilterSubStr(
test1,
LOG_DEBUG,
loggingHandlerFile("test_interceptor", 1024 * 1024),
true);
logger->addFilter(tint);
printf("\n");
printf("filter added\n");
printf("\n");
log_info("This is an info message");
log_error("This is an error message%s", "123");
log_fatal("This is an fatal message");
log_debug("This is a debug message");
log_warning("This is a warning message%s", "123");
destroyDefaultLogger();
return 0;
}
```
#### 多个子串过滤器
```c
#include "logging.h"
#include <stdbool.h>
#include <stdio.h>
#include <time.h>
int main() {
Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG);
log_info("This is an info message");
log_error("This is an error message%s", "123");
log_fatal("This is an fatal message");
log_debug("This is a debug message");
log_warning("This is a warning message%s", "123");
char *test1[] = {"This",NULL};
log_filter *tint = loggingFilterSubStr(
test1,
LOG_DEBUG,
loggingHandlerFile("test_interceptor", 1024 * 1024),
false);
logger->addFilter(tint);
char *test2[] = {"123",NULL};
log_filter *tint1 = loggingFilterSubStr(
test2,
LOG_DEBUG,
loggingHandlerFile("test_interceptor1", 1024 * 1024),
true);
logger->addFilter(tint1);
printf("\n");
printf("filter added\n");
printf("\n");
log_info("This is an info message");
log_error("This is an error message%s", "123");
log_fatal("This is an fatal message");
log_debug("This is a debug message");
log_warning("This is a warning message%s", "123");
destroyDefaultLogger();
return 0;
}
```
![avatar](https://profile-avatar.csdnimg.cn/7be31534d5d34df890f6ea820718b8ed_liaozp88.jpg!1)
徐浪老师
- 粉丝: 8678
- 资源: 1万+
最新资源
- 风光储微网并网仿真模型的构建与实施:永磁风机发电机、光伏阵列与储能系统集成控制策略研究,风光储微网并网仿真模型的构建与实践:永磁风机、光伏阵列与储能系统的协同控制策略及并网特性研究,风光储微网并网仿真
- 基于GWO-CNN-LSTM-Attention混合模型的超前多步多特征回归预测系统:2023版MATLAB平台优化与可视化分析,基于GWO-CNN-LSTM-Attention算法的深度学习多特征超
- AIAS-Java资源
- SQLite.swift-Swift资源
- 人工势场法路径规划Matlab代码详解:两种方法的编写与改进公式解析,人工势场法路径规划matlab代码详解:含改进方法与详细注释的实用指南,人工势场法路径规划matlab代码,下图为人工势场法,人工
- PID_Parameters_Auto_Tuning-Matlab资源
- cve-ease-机器人开发资源
- Kotlin-Kotlin资源
- 分布式电源接入对配电网运行影响评估系统:位置、功率设置与潮流计算分析,基于MATLAB仿真的分布式电源接入对配电网影响深度分析:位置、功率与运行方式评估,1.分布式电源接入对配电网影响分析 关键词:分
- AIOT人工智能物联网数据平台前端-AI人工智能资源
- 基于人工势场与领航跟随算法的机器人导航Matlab仿真研究,人工势场引导的领航跟随行为研究-基于Matlab的仿真分析与验证,人工势场+领航跟随matlab仿真 ,人工势场; 领航跟随; MAT
- 《基于Simulink的电力电子单相交直交变频电源设计与仿真研究报告》,基于Simulink的电力电子单相交直交变频电源仿真报告:整合整流、逆变、变频及调压技术的研究与实现,Simulink仿真,电力
- 基于模拟退火算法优化的BP神经网络SA-BP回归预测与分类时序预测模型-MATLAB平台实现及中文注释说明,基于模拟退火算法优化的BP神经网络数据回归预测模型-主程序在MATLAB中实现,含中文清
- 混合动力汽车基于后向仿真能量管理策略研究:工况影响下的转矩与SOC变化分析,整车similink模型应用,混合动力汽车基于后向仿真能量管理策略:工况自适应下的发动机、电机转矩及电池SOC变化研究,混合
- 基于CNN-LSSVM算法的多输出数据回归预测模型:Matlab 2019A及以上版本实现代码,基于CNN-LSSVM算法的多输出数据回归预测模型-Matlab 2019A及更高版本实现,基于卷积神
- Rust通用代码生成器:莲花-Rust资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)