打印并输出 log/日志到文件(C++)
#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);
}
}
┆凉┆暖┆降┆等┆幸┆我┆我┆里┆将┆ ┆可┆有┆谦┆戮┆那┆ ┆大┆始┆ ┆然┆
┆薄┆一┆临┆你┆的┆还┆没┆ ┆来┆ ┆是┆来┆逊┆没┆些┆ ┆雁┆终┆ ┆而┆
┆ ┆暖┆ ┆如┆地┆站┆有┆ ┆也┆ ┆我┆ ┆的┆有┆精┆ ┆也┆没┆ ┆你┆
┆ ┆这┆ ┆试┆方┆在┆逃┆ ┆会┆ ┆在┆ ┆清┆来┆准┆ ┆没┆有┆ ┆没┆
┆ ┆生┆ ┆探┆ ┆最┆避┆ ┆在┆ ┆这┆ ┆晨┆ ┆的┆ ┆有┆来┆ ┆有┆
┆ ┆之┆ ┆般┆ ┆不┆ ┆ ┆这┆ ┆里┆ ┆没┆ ┆杀┆ ┆来┆ ┆ ┆来┆