主题
注销日志 Skin - LogUnregisterSkin
函数简介
按 LogRegisterSkin 返回的单个位枚举值,注销对应的全局日志 Skin。注销后,即使某 logger 的 LogSetTarget 仍包含该位,也不再向该 Skin 投递。
接口名称
LogUnregisterSkinDLL调用
c
int32_t LogUnregisterSkin(int64_t instance, int32_t skinTarget);参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| instance | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
| skinTarget | 整数型 | LogRegisterSkin 返回的单个位枚举(必须是 2 的幂,且落在用户 Skin 掩码 0xFFFFFF00 内)。 |
示例
流程:LogRegisterSkin → LogSetTarget → 写日志 → LogUnregisterSkin(skin)。脚本语言侧回调地址以各 SDK 为准。
SDK 调用
cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
// 回调见 LogRegisterSkin / OLALogSkinCallback 文档
// void OLA_CALL_TYPE OnUiLog(...);
int skin = ola.LogRegisterSkin((int64_t)(void*)&OnUiLog, 0);
if (skin == 0) {
return;
}
ola.LogSetTarget(0, 1 | skin); // FILE | skin
ola.LogInfo("via skin");
int ret = ola.LogUnregisterSkin(skin);
if (ret != 1) {
return;
}csharp
using System;
using OLAPlug;
var ola = new OLAPlugServer();
// 完整回调注册见 LogRegisterSkin 文档;此处假设已得到 skin 位
int skin = ola.LogRegisterSkin(cbPtr, 0);
if (skin == 0) return;
ola.LogSetTarget(0, 1 | skin);
ola.LogInfo("via skin");
int ret = ola.LogUnregisterSkin(skin);python
from OLAPlugServer import OLAPlugServer
ola = OLAPlugServer()
# callback_addr 为回调地址(int),具体封装以 SDK 为准
skin = ola.LogRegisterSkin(callback_addr, 0)
if skin == 0:
raise RuntimeError("LogRegisterSkin failed")
ola.LogSetTarget(0, 1 | skin)
ola.LogInfo("via skin")
ret = ola.LogUnregisterSkin(skin)java
import com.olaplug.OLAPlugServer;
OLAPlugServer ola = new OLAPlugServer();
// 回调注册方式以 Java SDK 为准
int skin = ola.LogRegisterSkin(callbackAddr, 0);
if (skin == 0) {
return;
}
ola.LogSetTarget(0, 1 | skin);
ola.LogInfo("via skin");
int ret = ola.LogUnregisterSkin(skin);go
import "github.com/ola/olaplug/olaplug"
ola, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
defer ola.ReleaseObj()
skin := ola.LogRegisterSkin(callbackAddr, 0)
if skin == 0 {
return
}
ola.LogSetTarget(0, 1|skin)
ola.LogInfo("via skin")
ret := ola.LogUnregisterSkin(skin)
if ret != 1 {
return
}rust
use olaplug::OLAPlugServer;
let ola = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();
let skin = ola.log_register_skin(callback_addr, 0);
if skin == 0 {
return;
}
ola.log_set_target(0, 1 | skin);
ola.log_info("via skin");
let ret = ola.log_unregister_skin(skin);
if ret != 1 {
return;
}cpp
var ola = com("OlaPlug.OlaSoft")
// 回调地址以 TC SDK 为准
var skin = ola.LogRegisterSkin(callbackAddr, 0)
if(skin != 0) {
ola.LogSetTarget(0, 1 | skin)
ola.LogInfo("via skin")
ola.LogUnregisterSkin(skin)
}vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
' 回调地址以按键精灵 SDK 为准;目标 = FILE Or skin
skin = ola.LogRegisterSkin(callbackAddr, 0)
If skin <> 0 Then
ola.LogSetTarget 0, (1 Or skin)
ola.LogInfo "via skin"
ola.LogUnregisterSkin skin
End Iftext
.局部变量 ola, OLAPlug
.局部变量 ret, 整数型
ola.Create ()
' 回调地址以易语言 SDK 为准
.局部变量 skin, 整数型
skin = ola.LogRegisterSkin (callbackAddr, 0)
.如果真 (skin ≠ 0)
ola.LogSetTarget (0, 位或 (1, skin))
ola.LogInfo (“via skin”)
ret = ola.LogUnregisterSkin (skin)
.如果真结束aardio
import OLAPlugServer;
var ola = OLAPlugServer();
// 回调地址以 Aardio SDK 为准
var skin = ola.LogRegisterSkin(callbackAddr, 0);
if(skin != 0){
ola.LogSetTarget(0, 1 | skin);
ola.LogInfo("via skin");
ola.LogUnregisterSkin(skin);
}text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
' 回调地址以火山 SDK 为准
整数 skin = ola.LogRegisterSkin(callbackAddr, 0)
如果真 (skin ≠ 0)
{
ola.LogSetTarget(0, 1 位或 skin)
ola.LogInfo("via skin")
ola.LogUnregisterSkin(skin)
}cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
int skin = ola.LogRegisterSkin((int64_t)(void*)&OnUiLog, 0);
if (skin == 0) {
return;
}
ola.LogSetTarget(0, 1 | skin);
ola.LogInfo("via skin");
int32_t ret = ola.LogUnregisterSkin(skin);原生 DLL 调用
cpp
long instance = CreateCOLAPlugInterFace();
long logger = 0;
// int skin = LogRegisterSkin(instance, (OLALogSkinCallback)&OnUiLog, 0);
// LogSetTarget(instance, 0, 1 | skin);
// LogInfo(instance, "via skin");
// LogUnregisterSkin(instance, skin);csharp
using System.Runtime.InteropServices;
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long CreateCOLAPlugInterFace();
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogRegisterSkin(long ola, long callback, long userData);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogSetTarget(long ola, long loggerHandle, int targetFlags);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogInfo(long ola, string message);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogUnregisterSkin(long ola, int skinTarget);
long instance = CreateCOLAPlugInterFace();
long logger = 0;
// int skin = LogRegisterSkin(instance, cbPtr, 0);
// LogSetTarget(instance, 0, 1 | skin);
// LogUnregisterSkin(instance, skin);python
from ctypes import CDLL, c_int, c_int64
ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
instance = ola.CreateCOLAPlugInterFace()
logger = 0
# skin = ola.LogRegisterSkin(instance, callback_addr, 0)
# ola.LogSetTarget(instance, 0, 1 | skin)
# ola.LogUnregisterSkin(instance, skin)返回值
| 返回值 | 说明 |
|---|---|
1 | 成功。 |
0 | 失败(未注册、非法值、或传入了多 bit 组合)。 |
注意事项
| 项目 | 说明 |
|---|---|
| 单 bit | 只接受 Register 返回的单个位,不可传入 skinA | skinB。 |
| targetFlags | 不会自动清除各 logger 已保存的 flags;残留位会被静默忽略。 |
| 位复用 | 注销后该位可被下次 LogRegisterSkin 再次分配。 |
相关接口
| 接口 | 说明 |
|---|---|
| LogRegisterSkin | 注册。 |
| LogClearSkins | 清空全部。 |
| OLALogSkinCallback | 回调类型。 |
