Version: 6000.3
语言: 中文
标准日志输出概述
日志记录的命令行参数

配置日志记录插件

嵌入式平台在将日志输出存储到文件方面可能存在限制。因此,这些平台在特殊的日志记录环境中收集日志事件,例如 DLT 和 slogger2。若要在 Unity 中实现此功能,可以使用位于<UnityInstallPath>/Editor/Data/PlaybackEngines/<EmbeddedLinux|QNX>/PluginAPI/unity_logging_plugin.h.

#pragma once

#include <stdint.h>

#if __GNUC__
    #define UNITY_LOGGING_PLUGIN_API extern "C" __attribute__ ((visibility ("default")))
#else
    #error "Unsupported compiler/platform"
#endif

/// Increments on changes to the UnityLoggingPluginAPI structure
#define UNITY_LOGGING_PLUGIN_VERSION 1

enum UnityLoggingLevel
{
    kUnityLoggingLevelError = 0,
    kUnityLoggingLevelAssert = 1,
    kUnityLoggingLevelWarning = 2,
    kUnityLoggingLevelLog = 3,
    kUnityLoggingLevelException = 4,
    kUnityLoggingLevelDebug = 5,
    kUnityLoggingLevelNumLevels
};

enum UnityLoggingStatus
{
    kUnityLoggingStatusSuccess = 0,
    kUnityLoggingStatusUnsupportedVersion = 1,
    kUnityLoggingStatusLoadFailure = 2,
    kUnityLoggingStatusUnloadFailure = 3,
    kUnityLoggingStatusDependencyFailure = 4,
};

typedef struct {
    const char* (*const GetString)(const char* key, const char* defaultValue);
    uint64_t (*const GetUInt64)(const char* key, uint64_t defaultValue);
    int64_t (*const GetInt64)(const char* key, int64_t defaultValue);
    uint32_t (*const GetUInt32)(const char* key, uint32_t defaultValue);
    int32_t (*const GetInt32)(const char* key, int32_t defaultValue);
} UnityLoggingPluginConfig;

typedef struct {
    typedef UnityLoggingStatus (*UnityLoggingLoad)(UnityLoggingPluginConfig* config);
    typedef UnityLoggingStatus (*UnityLoggingUnload)();
    typedef void (*UnityLoggingLog)(UnityLoggingLevel, const char*, uint32_t);

    UnityLoggingLoad Load;
    UnityLoggingUnload Unload;
    UnityLoggingLog Log;
} UnityLoggingPluginAPI;

UNITY_LOGGING_PLUGIN_API UnityLoggingStatus unity_logging_plugin_get_api(UnityLoggingPluginAPI* api, uint32_t version);

您可以启用日志记录插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息
请参阅术语表
通过提供 Player 参数-platform-hmi-log-plugin并指定插件共享库的路径。动态加载器必须可以访问共享库,以便使用dlopen并初始化。有关更多信息,请参阅日志记录的命令行参数

如果您将-logfile参数与 logging plug-in 参数一起使用,插件将初始化并记录单个测试消息,并且始终导致插件错误。记录这些步骤以帮助识别可能的问题。

如果插件初始化失败,Unity 默认返回错误退出码。在这种情况下,您可以使用-platform-hmi-log-disable-on-plugin-failure参数来保持播放器运行,而没有任何日志输出。

注意:日志记录插件示例可根据要求通过嵌入式平台支持合同提供。要请求访问权限,请联系嵌入式平台支持团队。

将插件与日志播放器设置集成

您可以配置日志记录插件以与适用于嵌入式 LinuxQNX 平台的日志记录播放器设置集成。为此,请考虑以下步骤并参考以下代码示例:

  1. 使用 SettingsProvider 类添加 Logging 设置。
  2. 使用以PluginBuildPostProcessor.
  3. 确保ProcessConfiguration方法与以下代码示例中提到的格式匹配。
  4. 使用platform-hmi-log-plugin论点。
namespace MyPluginNamespace
{
    public static class MyPluginBuildPostProcessor
    {
        private const string LoggingPluginKey = "platform-hmi-log-plugin";
        public static void ProcessConfiguration(Action<string, string> setValue)
        {
            // Set the shared library name for the plugin
            setValue(LoggingPluginKey, "mylogplugin.so");

            // (Optional) Set specific key values for the plugin
            setValue("my-plugin-setting", "42");
        }
    }

}

其他资源

标准日志输出概述
日志记录的命令行参数