vala - Vala如何支持C语言的__function__ __file__ __line__宏?

标签 vala

我需要添加一些日志信息,包括源文件名、函数名、

行号等...

我查看了官方文档,但没有找到...

那么,该怎么办呢?

最佳答案

这通常通过 GLib logging 完成.

例如尝试这个 Vala 应用程序:

int main (string[] args) {
    // info () is not shown by default, set G_MESSAGES_DEBUG=all in your shell to see them
    info ("Hello World");
    warning ("Hello World");
    //assert_true (false);
    // error () terminates the program
    error ("Hello World");
    return 0;
}

输出为:

$ G_MESSAGES_DEBUG=all src/glib_logging_test 
** INFO: glib_logging_test.vala:4: Hello World

** (process:10129): WARNING **: glib_logging_test.vala:5: Hello World

** (process:10129): ERROR **: glib_logging_test.vala:9: Hello World
Trace/Breakpoint ausgelöst

除了G_MESSAGES_DEBUG之外,您还可以设置G_DEBUG,参见running GLib applications .

您可以安装a custom handler以及 Log.set_handler ()

还有 Log.FILELog.LINELog.METHOD 等价于 C 宏的原始信息。

关于vala - Vala如何支持C语言的__function__ __file__ __line__宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36055888/

相关文章:

gtk3 - 如何获取 GLib.Settings 的范围

gtk - 瓦拉,GTK :How do I perform UI operations from a different thread?

gtk3 - 重写 vala 中的方法

generics - Vala:传递通用数组会破坏值

web-frameworks - 我们看到 Vala Web 框架的可能性有多大?

ubuntu - 在 pkg-config 搜索路径中找不到构建验证 : Package libvala-0. 12

c# - VALA 与 AOT 编译之间的性能差异?

javascript - 如何在Vala中的webkit2gtk-4.0中获取JS结果?

Vala:通过处理程序 ID 与类析构函数断开信号处理程序失败 - 为什么?

c - Vala - 常量而不是魔数(Magic Number)