#include <stdarg.h>
#define MAX_LEN 1024
bool debug_mode;
// 使用方法同 printf
void lprintf(const char *fmt, ...) {
static bool print_time = true; //是否要打印时间: 当 debug_mode 为真,且上一次是换行符结尾。
char message[MAX_LEN];
// 当前时间.
time_t timer = time(NULL);
strftime(message, 23, "[%Y-%m-%d %H:%M:%S] ", localtime(&timer));
va_list args;
va_start(args, fmt);
vsnprintf (message + 22, MAX_LEN - 22, fmt, args);
va_end(args);
if (debug_mode) {
printf("%s", message + 22);
}
int fd = open(LOG_FILE, O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR);
if (fd == -1) {
perror("open (log)");
} else {
if (print_time == false) {
if (write(fd, message + 22, strlen(message + 22)) == -1)
perror("lprintf");
} else {
if (write(fd, message, strlen(message)) == -1)
perror("lprintf");
}
print_time = (message[strlen(message) - 1] == '\n');
close(fd);
}
}
相关文章:
- SpringBoot输出日志到文件 SpringBoot输出日志到文件 2022-12-23
- logback 日志打印输出 2021-12-25
- python打印日志log 2022-12-23
- tomcat配置log4j打印输出日志到指定文件 2022-01-15
- yii 打印sql运行的日志到log文件中 2021-05-05
- RollingFileAppender 日志按天记录输出到log文件 2021-09-01
- 如何将shell的打印日志输入到日志文件 2021-06-18
- rsyslog 不打印日志到/var/log/messages 2022-12-23