import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Java实现类似C/C++中的__FILE__、__FUNC__、__LINE__等,主要用于日志等功能中。
*
* @version 1.0 2011-07-13
*
*/
public abstract class CommonFunction {
/**
* 打印日志时获取当前的程序文件名、行号、方法名 输出格式为:[FileName | LineNumber | MethodName]
*
* @return
*/
public static String getFileLineMethod() {
StackTraceElement traceElement = ((new Exception()).getStackTrace())[1];
StringBuffer toStringBuffer = new StringBuffer("[").append(
traceElement.getFileName()).append(" | ").append(
traceElement.getLineNumber()).append(" | ").append(
traceElement.getMethodName()).append("]");
return toStringBuffer.toString();
}
// 当前文件名
public static String _FILE_() {
StackTraceElement traceElement = ((new Exception()).getStackTrace())[1];
return traceElement.getFileName();
}
// 当前方法名
public static String _FUNC_() {
StackTraceElement traceElement = ((new Exception()).getStackTrace())[1];
return traceElement.getMethodName();
}
// 当前行号
public static int _LINE_() {
StackTraceElement traceElement = ((new Exception()).getStackTrace())[1];
return traceElement.getLineNumber();
}
// 当前时间
public static String _TIME_() {
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return sdf.format(now);
}
}
分享到:
相关推荐
如果使用C++,应使用`__func__`,因为C++标准中`__FUNCTION__`的含义不同。例如: ```c #include void someFunction() { printf("Error in function: %s\n", __FUNCTION__); } ``` 在实际的调试过程中,...
此外,这种调试方法不仅限于C语言,许多其他编程语言也有类似的功能,如C++的`__FILE__`, `__LINE__`, `__func__`,Java的`Thread.currentThread().getStackTrace()[2].getMethodName()`等,都是为了达到同样的目的...
在提供的测试工程中,可能包含了如何在VC6.0中实现或利用`__FUNCTION__`宏进行堆栈回溯的示例。 总的来说,理解并有效地使用`__FUNCTION__`宏,可以提高在VC6.0环境下编程的效率,特别是在涉及调试和日志记录的场景...
在IT行业中,日志类是常见的工具,用于记录程序运行时的信息,帮助开发者在调试、问题定位和性能分析等方面提供重要线索。C++作为一种强大的系统编程语言,虽然没有内置的日志系统,但我们可以自己创建一个简单易用...
它的主要功能是对代码进行缩进、换行、括号对齐、空格处理等一系列调整,帮助开发者实现统一的代码风格。`amxmodx.cfg`就是Uncrustify的一个配置文件,它定义了格式化时的具体规则。 首先,我们需要了解`amxmodx....
在C语言中实现日志打印,我们需要关注以下几个核心点: 1. **日志级别控制**:定义一个枚举类型或常量来表示日志级别,并在打印日志时根据设定的级别筛选信息。例如: ```c enum LogLevel {DEBUG, INFO, NOTICE, ...
Uncrustify是一款开源的代码格式化工具,它支持多种编程语言,包括C、C++、C#、Objective-C等。它的主要功能是将代码按照预设的规则进行排列和格式化,使得代码风格统一,便于阅读和维护。`amxmodx.cfg`是Uncrustify...
《Visual C++ 教程:第7章 文档视图结构》 在计算机编程领域,尤其是在Windows应用程序开发中,Visual C++是一个强大的工具,而文档视图结构是它的一个核心概念。这一章节主要讲解如何利用MFC(Microsoft ...
void log(const QSLog::LogLevel level, const char* file, int line, const char* func, const QString& message) override { QFile file("app.log"); if (file.open(QIODevice::WriteOnly | QIODevice::Append...
这个基类通常是为了扩展C++标准库中的`std::exception`,增加额外的功能,比如包含抛出异常时的行号、文件名或者函数名称等。 在`ExceptionEx.cpp`和`ExceptionEx.h`这两个文件中,我们可能看到以下内容: 1. `...
C++ 错误处理通常涉及三种主要机制:异常处理、返回值错误码和日志记录。 ### 异常处理 异常处理是C++中用于处理错误的主流方式。在C++中,当程序遇到无法正常处理的情况时,可以抛出一个异常(`throw`)。其他...
13. **调试**:C99提供了对调试信息的支持,如`__FILE__`、`__LINE__`、`__func__`等宏,便于调试。 【Linux编程知识点】 1. **ELF文件结构**:ELF是Linux下的可执行文件格式,包含了程序的代码、数据和元信息。 ...
2. **Java中的读写文件** Java使用`FileReader`和`FileWriter`类进行读写操作,或者更高级的`BufferedReader`和`BufferedWriter`以提高性能。示例如下: ```java try (BufferedReader br = new BufferedReader...
输入输出流是C++中用于处理输入输出操作的机制,它支持文件、网络等多种输入输出设备。 - **基本I/O流**: `main.cpp`文件中可能使用了基本的输入输出流,如`std::cin`和`std::cout`。 ```cpp int value; std...
近几年来,Nginx 在国内已经成炙热化状态,许多大型网站例如腾讯、网易、51CTO、迅雷、当当网、51、人人网等都已经使用 Nginx 作为 Web 服务器。 二、安装 Nginx 所需依赖项 在安装 Nginx 之前,我们需要安装一些...
10. **文件位置宏**:`__LINE__`和`__FILE__`宏现在可以提供关于源代码的位置信息,便于调试和日志记录。 通过深入阅读"C语言标准文档",你不仅可以了解到C99的所有新特性,还能理解其背后的原理和设计意图。这将有...
- **移动构造函数**:在C++11中引入,用于将临时对象的状态“移动”到新对象中,优化性能。 **析构函数**的作用是在对象生命周期结束前执行清理工作,如释放资源。它由编译器自动调用,不能被重载,也不允许返回...
本篇文章将详细介绍如何在Java中实现获取当前函数名的功能,并提供相应的代码示例。 Java不像C++或C#那样提供内置的预处理器宏,如`__FILE__`, `__FUNCTION__`, 或者 `__LINE__`来直接获取这些信息。然而,我们可以...