包含此页的版本:
不含此页的版本:
嵌入式平台在将日志输出存储到文件方面可能存在限制。因此,这些平台在特殊的日志记录环境中收集日志事件,例如 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参数来保持播放器运行,而没有任何日志输出。
注意:日志记录插件示例可根据要求通过嵌入式平台支持合同提供。要请求访问权限,请联系嵌入式平台支持团队。
您可以配置日志记录插件以与适用于嵌入式 Linux 和 QNX 平台的日志记录播放器设置集成。为此,请考虑以下步骤并参考以下代码示例:
PluginBuildPostProcessor.ProcessConfiguration方法与以下代码示例中提到的格式匹配。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");
}
}
}