log.c:

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <time.h>
#include <unistd.h>

#include "log.h" void logmessage(char *logheader, char *fmt, ...)
{
va_list args;
char buf[]; va_start(args, fmt);
vsnprintf(buf, sizeof(buf) - , fmt, args); openlog(logheader, , ); syslog(, buf); closelog();
va_end(args); return;
} void logcurrent(const char *func, int line, char *fmt, ...)
{
va_list args;
FILE *fp = NULL;
char tmp[];
char buf[];
char log_message[];
char *path;
char *time_s;
time_t t; time_s = tmp; t = time(NULL);
time_s = ctime(&t);
time_s[strlen(time_s) - ] = ' '; // remove '\n' va_start(args, fmt);
vsnprintf(log_message, sizeof(log_message) - , fmt, args);
printf("log_message : %s\n", log_message); snprintf(buf, sizeof(buf) - , "%s %s[%d] %s", time_s, func, line, log_message);
printf("buf : %s\n", buf); path = get_current_dir_name(); strcat(path, "/log.text"); fp = fopen(path, "a+");
if (fp == NULL) {
perror("fopen");
return;
} if (fwrite(buf, strlen(buf), , fp) == ) {
perror("fwrite");
return;
} if (fp) {
fclose(fp);
} va_end(args); return;
} int main(void)
{
tcp_log("%s", "1234567890z");
logcurrent(__func__, __LINE__, "abc\n");
}

log.h:

#ifndef __LOG_H__
#define __LOG_H__ #ifndef SYS_LOG
#define tcp_log(fmt, args...) logcurrent(__func__, __LINE__, fmt, ## args)
#else
#define tcp_log(fmt, args...) logmessage(log_header, fmt, ## args)
#endif
#endif

Makefile:

CC = gcc
TARGET = log-test
SOURCE = log.c all: clean
$(CC) $(SOURCE) -o $(TARGET) clean:
rm -rf $(TARGET)

写入简单的日志log的更多相关文章

  1. Linux下一个简单的日志系统的设计及其C代码实现

    1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...

  2. Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

    Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...

  3. Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验

    Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...

  4. 如何正确使用日志Log

    title: 如何正确使用日志Log date: 2015-01-08 12:54:46 categories: [Python] tags: [Python,log] --- 文章首发地址:http ...

  5. 一件关于数据库日志log的无聊事情

    为何说是无聊的记录呢? 因为事先把问题想复杂了,事后发现的时候觉得更是无聊的行为.还是写下来,毕竟很少弄这么无聊的事情. 事情起因是需要给服务器做性能基数(baseline),用sqldiag 提取了 ...

  6. setbuffer和freopen做一个简单的日志组件

    目标场景是这样的: 多线程的应用程序要频繁打一些小字节的日志,也不想引用很重的日志库. 设想了一个极其简单的日志组件,main线程中重定向stdout到文件,同时setbuffer设置一个10k的缓冲 ...

  7. [.Net Core] 在 Mvc 中简单使用日志组件

    在 Mvc 中简单使用日志组件 基于 .Net Core 2.0,本文只是蜻蜓点水,并非深入浅出. 目录 使用内置的日志组件 简单过渡到第三方组件 - NLog 使用内置的日志 下面使用控制器 Hom ...

  8. C++ 最简单的日志类

    最近搞一个 C++ 项目的二次开发,没玩过 C++,可谓步履维艰.自己写个简单的日志类都被各种坑折磨.终于搞定了. 参考了这篇博客,并且进一步简化:https://www.cnblogs.com/Ds ...

  9. Expo大作战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,将全部来与官网 我猜去全部机翻+个人 ...

随机推荐

  1. Android进阶——Android视图工作机制之measure、layout、draw

    自定义View一直是初学者们最头疼的事情,因为他们并没有了解到真正的实现原理就开始试着做自定义View,碰到很多看不懂的代码只能选择回避,做多了会觉得很没自信.其实只要了解了View的工作机制后,会发 ...

  2. mysql第三篇:表操作

    第三篇:表操作 一.什么是表 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 二.创建表 语法 CREATE TABLE 表名( 字段名1 类型 ...

  3. CountDownLatch、CyclicBarrier、Semaphore的使用

    CountDownLatch(计数器) 主线程等待另外三个线程执行完成后再执行 public static void main(String[] args) { //定义一个CountDownLatc ...

  4. MFC下的网络编程(1)CAsyncSocket进行无连接(UDP)通信

    服务器端发送数据给客户端 先看服务器端: CAsyncSocket m_sockSend;                       //声明一个Socket对象 点击发送数据后,执行下面这些动作 ...

  5. Java SE 5.0(JDK 1.5)新特性

    目录 自动装箱与拆箱 枚举(常用来设计单例模式) 静态导入static import 可变参数(Varargs) 内省(Introspector) 泛型(Generics) For-Each循环 ja ...

  6. k8常用操作

    1.当delete pod失败时,使用下面命令强制删除Terminging状态下的pod kubectl delete pod xxxxxx --grace-period=0 --force 2.

  7. 期末项目之 Json文件

    Github上的json文件: https://raw.githubusercontent.com/color-me/first/master/b

  8. “帮你”校园资讯平台app使用体验

    该app由我的17级学长学姐编写而成,主要功能失物招领,二手市场,表白墙.该软件目前只是面向本校的各专业学生,为内测版本.该软件的注册流程简单,只需要学号确定身份后即可登陆,并且发布各种信息,或者与丢 ...

  9. POJ-1733 Parity game(带权并查集区间合并)

    http://poj.org/problem?id=1733 题目描述 你和你的朋友玩一个游戏.你的朋友写下来一连串的0或者1.你选择一个连续的子序列然后问他,这个子序列包含1的个数是奇数还是偶数.你 ...

  10. Sqlserver 标量函数

    以前只是了解标量函数这个概念,感觉使用量好像并不大,等我真正做sql编码的时候才发现它的好处.简直太方便了实用了. 我们知道在进行软件开发的时候要定义很多不同类型,每个类型又会分很多项.比如: 搞前端 ...