Linux下获取代码文件名、代码所在行数及日期时间的C程序实现

简介: 一、概述 在实际的软件开发项目中,为了方便排查程序问题,要求在日志文件中输出日志信息所在的程序文件名及日志代码所在的行数。

一、概述
在实际的软件开发项目中,为了方便排查程序问题,要求在日志文件中输出日志信息所在的程序文件名及日志代码所在的行数。此外,某些软件还会要求将程序启动时的日期时间输出到日志文件中,方便跟踪软件运行状况。
本文介绍了Linux下获取代码文件名、代码行数及日期时间的C代码实现。

二、几个标准预定义宏简介
在C语言中,使用几个标准预定义宏,便可轻松实现获取代码文件名、代码行数及日期时间的功能。
这几个宏的定义如下(注意:前后都是两条连续的下划线):

__FILE__:在源文件中插入当前源文件名。
__FUNCTION__:在源文件中插入当前源代码所在函数名。
__LINE__:在源代码中插入当前源代码行号。
__DATE__:在源文件中插入当前的编译日期。
__TIME__:在源文件中插入当前编译时间。

三、C代码实现

/**********************************************************************
* 版权所有 (C)2015, Zhou Zhaoxiong。
*
* 文件名称:FileNameAndLine.c
* 文件标识:无
* 内容摘要:打印输出信息所在的代码文件名、所在的行数及日期时间
* 其它说明:无
* 当前版本:V1.0
* 作    者:Zhou Zhaoxiong
* 完成日期:20150511
*
**********************************************************************/
#include <stdio.h>

// 重定义数据类型
typedef signed   int    INT32;
typedef unsigned char   UINT8;

/**********************************************************************
* 功能描述:主函数
* 输入参数:无
* 输出参数:无
* 返 回 值:无
* 其它说明:无
* 修改日期        版本号     修改人            修改内容
* -------------------------------------------------------------------
* 20150511        V1.0     Zhou Zhaoxiong        创建
***********************************************************************/
INT32 main()
{
    UINT8 szContentBuf[256] = {0};

    snprintf(szContentBuf, sizeof(szContentBuf)-1, "This log is in [%s], [%s], and lineno is [%d], currenttime is [%s %s].\n", __FILE__, __FUNCTION__, __LINE__, __DATE__, __TIME__);
    printf(szContentBuf);   // 将消息输出

    return 0; 
}

四、文件编译及运行结果
在Linux下执行“gcc -g -o FileNameAndLine FileNameAndLine.c”命令,生成“FileNameAndLine”。然后再执行“FileNameAndLine”命令,程序运行结果如下:

[zhou|/home/zhou/zhouzx/test] gcc -g -o FileNameAndLine FileNameAndLine.c
[zhou|/home/zhou/zhouzx/test] FileNameAndLine
This log is in [FileNameAndLine.c], [main], and lineno is [34], currenttime is [May 18 2015 10:35:55].

本人微信公众号:zhouzxi,请扫描以下二维码:
这里写图片描述

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
Linux
linux如何查找指定文件名
linux如何查找指定文件名
|
存储 编译器
Linux--程序地址空间
Linux--程序地址空间
|
1月前
|
安全 Linux 网络安全
Linux使用HTTP隧道代理代码示例模版
Linux使用HTTP隧道代理代码示例模版
19 0
|
2月前
|
自然语言处理 数据挖掘 Linux
ModelScope问题之拷贝到内网linux系统运行代码报错如何解决
本合集将提供ModelScope安装步骤、配置要求和环境准备,以便用户顺利启动ModelScope进行模型开发和测试。
59 0
|
28天前
|
Linux 编译器 程序员
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
68 0
|
1月前
|
安全 Linux 开发者
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
82 1
|
16小时前
|
Java Shell Linux
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
|
1天前
|
Linux 开发工具 C语言
Linux 安装 gcc 编译运行 C程序
Linux 安装 gcc 编译运行 C程序
10 0
|
1月前
|
算法 Unix Shell
【Shell 命令集合 系统管理 】Linux 显示或设置系统时间和日期 date命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示或设置系统时间和日期 date命令 使用指南
33 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 系统设置 内置命令】⭐⭐Linux 测量程序的执行时间和资源使用情况 time命令 使用指南
【Shell 命令集合 系统设置 内置命令】⭐⭐Linux 测量程序的执行时间和资源使用情况 time命令 使用指南
31 0