Skip to content

注销日志 Skin - LogUnregisterSkin

函数简介

LogRegisterSkin 返回的单个位枚举值,注销对应的全局日志 Skin。注销后,即使某 logger 的 LogSetTarget 仍包含该位,也不再向该 Skin 投递。

接口名称

LogUnregisterSkin

DLL调用

c
int32_t LogUnregisterSkin(int64_t instance, int32_t skinTarget);

参数说明

参数名类型说明
instance长整数型OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。
skinTarget整数型LogRegisterSkin 返回的单个位枚举(必须是 2 的幂,且落在用户 Skin 掩码 0xFFFFFF00 内)。

示例

流程:LogRegisterSkinLogSetTarget → 写日志 → 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 If
text
.局部变量 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回调类型。