虚幻4LOG的使用

LOG配置说明

  • 可以在 DefaultEngine.ini 中修改以下几项配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [LogFiles]
    ; 5天前的log全部删除,-1为不清理
    PurgeLogsDays=5

    ; 最多保留最近的10log文件,-1为不清理
    MaxLogFilesOnDisk=10

    ; log中的时间格式,True为UTC时间戳,False为不输出时间戳,SinceStart 为自进程启动以来的秒数
    LogTimes=True

LOG命令行参数说明

  • -LOG

    • 指定log文件名称,默认为 游戏名称.log
    • 例如:-LOG=CustomName.log
    • 说明:
      • 会自动创建log路径中不存在的文件夹
  • -ABSLOG

    • 指定log文件的完整路径,默认为 工程目录\Saved\Logs\游戏名称.log
    • 例如:-ABSLOG=D:/CustomName.log
    • 说明:
      • 如果同时指定 -LOG-ABSLOG,只会生效 -LOG
      • 会自动创建log路径中不存在的文件夹
  • -FORCELOGFLUSH

    • 输出log时实时写到log文件中,默认为缓冲区满了才写到log中
  • log中的时间戳格式

    • -LOGTIMES

      • log中的时间为UTC时间戳
    • -NOLOGTIMES

      • 不带时间戳
    • -LOGTIMESINCESTART

      • log中的时间为自进程启动以来的秒数
    • 优先级:-LOGTIMES > -NOLOGTIMES > -LOGTIMESINCESTART

      • 意思就是命令行中同时存在这些命令,以优先级高的为准
      • 如果命令行中指定了时间戳格式,那么以命令行中的为准,忽略配置文件中的时间格式配置

LOG宏的使用

  • LOG声明

    1
    2
    3
    4
    5
    6
    7
    /** 
    * A macro to declare a logging category as a C++ "extern"
    * @param CategoryName, 新的log分类名称
    * @param DefaultVerbosity, 该log分类的日志等级(小于这个log等级的日志都不会被输出)
    * @param CompileTimeVerbosity, 该log分类最大的日志等级
    **/

    DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity);

    例如:

    1
    2
    // 声明一个LogTest分类,默认日志等级为Log,最大支持的日志等级为All
    DECLARE_LOG_CATEGORY_EXTERN(LogTest, Log, All);
  • LOG实现

    1
    DEFINE_LOG_CATEGORY(CategoryName)

    例如:

    1
    DEFINE_LOG_CATEGORY(LogTest)

日志等级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
namespace ELogVerbosity
{
enum Type
{
/** 禁用,不输出任何log */
NoLogging = 0,

/** 致命错误等级,同时输出到控制台和文件中
* Always prints s fatal error to console (and log file) and crashes (even if logging is disabled)
*/

Fatal,

/** 错误等级,同时输出到控制台和文件中
* Prints a warning to console (and log file).
* Commandlets and the editor collect and report warnings. Warnings can be treated as an error.
*/

Error,

/**
* 警告等级,同时输出到控制台和文件中
* Prints a warning to console (and log file).
* Commandlets and the editor collect and report warnings. Warnings can be treated as an error.
*/

Warning,

/**
* 信息等级,同时输出到控制台和文件中
* Prints a message to console (and log file)
*/

Display,

/**
* 日志等级,只输出到文件中
* Prints a message to a log file (does not print to console)
*/

Log,

/**
* 详细等级
* Prints a verbose message to a log file (if Verbose logging is enabled for the given category,
* usually used for detailed logging)
*/

Verbose,

/**
* 调试等级
* Prints a verbose message to a log file (if VeryVerbose logging is enabled,
* usually used for detailed logging that would otherwise spam output)
*/

VeryVerbose,

// Log masks and special Enum values

All = VeryVerbose,
NumVerbosity,
VerbosityMask = 0xf,
SetColor = 0x40, // not actually a verbosity, used to set the color of an output device
BreakOnLog = 0x80
};
}