Skip to content

写入ERROR日志Ex - LogErrorEx

函数简介

写入 ERROR 级别日志(扩展版本),支持指定日志实例。

接口名称

LogErrorEx

DLL调用

c
int32_t LogErrorEx(int64_t instance, int64_t loggerHandle, const char* message);

参数说明

参数名类型说明
instance长整数型OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。
loggerHandle长整数型日志实例句柄(0 表示默认实例)。
message字符串日志消息。

示例

推荐联动顺序:

logger = LogCreateInstance("ErrorLogger")
        → LogSetLevel(logger, 4) → LogSetBaseDirectory → LogSetFileNamePattern
        → LogErrorEx(logger, "...") → LogFlush(logger) → LogDestroyInstance(logger)

ERROR=4,操作失败但仍可继续运行LogCreateInstance 必须传入实例名;失败返回 0。

SDK 调用

cpp
#include "OLAPlugServer.h"

OLAPlugServer ola;

int64_t logger = ola.LogCreateInstance("ErrorLogger");
if (logger == 0) {
    return; // 创建失败
}

ola.LogSetLevel(logger, 4);              // ERROR=4,操作失败但仍可继续运行
ola.LogSetBaseDirectory(logger, "D:\\logs");
ola.LogSetFileNamePattern(logger, "app_{date}.log");

ola.LogErrorEx(logger, "连接数据库失败: timeout after 5000ms");
ola.LogFlush(logger);
ola.LogDestroyInstance(logger);
csharp
using OLAPlug;

var ola = new OLAPlugServer();

long logger = ola.LogCreateInstance("ErrorLogger");
if (logger == 0) return; // 创建失败

ola.LogSetLevel(logger, 4);              // ERROR=4,操作失败但仍可继续运行
ola.LogSetBaseDirectory(logger, @"D:\logs");
ola.LogSetFileNamePattern(logger, "app_{date}.log");

ola.LogErrorEx(logger, "连接数据库失败: timeout after 5000ms");
ola.LogFlush(logger);
ola.LogDestroyInstance(logger);
python
from OLAPlugServer import OLAPlugServer

ola = OLAPlugServer()

logger = ola.LogCreateInstance("ErrorLogger")
if logger == 0:
    raise RuntimeError("LogCreateInstance failed")

ola.LogSetLevel(logger, 4)              # ERROR=4,操作失败但仍可继续运行
ola.LogSetBaseDirectory(logger, r"D:\logs")
ola.LogSetFileNamePattern(logger, "app_{date}.log")

ola.LogErrorEx(logger, "连接数据库失败: timeout after 5000ms")
ola.LogFlush(logger)
ola.LogDestroyInstance(logger)
java
import com.olaplug.OLAPlugServer;

OLAPlugServer ola = new OLAPlugServer();

long logger = ola.LogCreateInstance("ErrorLogger");
if (logger == 0) {
    return; // 创建失败
}

ola.LogSetLevel(logger, 4);              // ERROR=4,操作失败但仍可继续运行
ola.LogSetBaseDirectory(logger, "D:\\logs");
ola.LogSetFileNamePattern(logger, "app_{date}.log");

ola.LogErrorEx(logger, "连接数据库失败: timeout after 5000ms");
ola.LogFlush(logger);
ola.LogDestroyInstance(logger);
go
import "github.com/ola/olaplug/olaplug"

ola, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
defer ola.ReleaseObj()

logger := ola.LogCreateInstance("ErrorLogger")
if logger == 0 {
    return // 创建失败
}

ola.LogSetLevel(logger, 4)              // ERROR=4,操作失败但仍可继续运行
ola.LogSetBaseDirectory(logger, `D:\logs`)
ola.LogSetFileNamePattern(logger, "app_{date}.log")

ola.LogErrorEx(logger, "连接数据库失败: timeout after 5000ms")
ola.LogFlush(logger)
ola.LogDestroyInstance(logger)
rust
use olaplug::OLAPlugServer;

let ola = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();

let logger = ola.log_create_instance("ErrorLogger");
if logger == 0 {
    return; // 创建失败
}

ola.log_set_level(logger, 4);              // ERROR=4,操作失败但仍可继续运行
ola.log_set_base_directory(logger, r"D:\logs");
ola.log_set_file_name_pattern(logger, "app_{date}.log");

ola.log_error_ex(logger, "连接数据库失败: timeout after 5000ms");
ola.log_flush(logger);
ola.log_destroy_instance(logger);
cpp
var ola = com("OlaPlug.OlaSoft")

var logger = ola.LogCreateInstance("ErrorLogger")
if(logger != 0) {
    ola.LogSetLevel(logger, 4)              // ERROR=4,操作失败但仍可继续运行
    ola.LogSetBaseDirectory(logger, "D:\\logs")
    ola.LogSetFileNamePattern(logger, "app_{date}.log")

    ola.LogErrorEx(logger, "连接数据库失败: timeout after 5000ms")
    ola.LogFlush(logger)
    ola.LogDestroyInstance(logger)
}
vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")

logger = ola.LogCreateInstance("ErrorLogger")
If logger <> 0 Then
    ola.LogSetLevel logger, 4              ' ERROR=4,操作失败但仍可继续运行
    ola.LogSetBaseDirectory logger, "D:\logs"
    ola.LogSetFileNamePattern logger, "app_{date}.log"

    ola.LogErrorEx logger, "连接数据库失败: timeout after 5000ms"
    ola.LogFlush logger
    ola.LogDestroyInstance logger
End If
text
.局部变量 ola, OLAPlug
.局部变量 logger, 长整数型

ola.Create ()
logger = ola.LogCreateInstance (“ErrorLogger”)
.如果真 (logger ≠ 0)
    ola.LogSetLevel (logger, 4)              ' ERROR=4,操作失败但仍可继续运行
    ola.LogSetBaseDirectory (logger, “D:\logs”)
    ola.LogSetFileNamePattern (logger, “app_{date}.log”)

    ola.LogErrorEx (logger, “连接数据库失败: timeout after 5000ms”)
    ola.LogFlush (logger)
    ola.LogDestroyInstance (logger)
.如果真结束
aardio
import OLAPlugServer;
var ola = OLAPlugServer();

var logger = ola.LogCreateInstance("ErrorLogger");
if(logger != 0){
    ola.LogSetLevel(logger, 4);              // ERROR=4,操作失败但仍可继续运行
    ola.LogSetBaseDirectory(logger, "D:\\logs");
    ola.LogSetFileNamePattern(logger, "app_{date}.log");

    ola.LogErrorEx(logger, "连接数据库失败: timeout after 5000ms");
    ola.LogFlush(logger);
    ola.LogDestroyInstance(logger);
}
text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer

长整数 logger = ola.LogCreateInstance("ErrorLogger")
如果真 (logger ≠ 0)
{
    ola.LogSetLevel(logger, 4)              ' ERROR=4,操作失败但仍可继续运行
    ola.LogSetBaseDirectory(logger, "D:\\logs")
    ola.LogSetFileNamePattern(logger, "app_{date}.log")

    ola.LogErrorEx(logger, "连接数据库失败: timeout after 5000ms")
    ola.LogFlush(logger)
    ola.LogDestroyInstance(logger)
}
cpp
#include "OLAPlugServer.h"

OLAPlugServer ola;

int64_t logger = ola.LogCreateInstance("ErrorLogger");
if (logger != 0) {
    ola.LogSetLevel(logger, 4);              // ERROR=4,操作失败但仍可继续运行
    ola.LogSetBaseDirectory(logger, "D:\\logs");
    ola.LogSetFileNamePattern(logger, "app_{date}.log");

    ola.LogErrorEx(logger, "连接数据库失败: timeout after 5000ms");
    ola.LogFlush(logger);
    ola.LogDestroyInstance(logger);
}

原生 DLL 调用

cpp
long instance = CreateCOLAPlugInterFace();

// Native: LogCreateInstance(instance, "name"); LogErrorEx(instance, loggerHandle, message)
long logger = LogCreateInstance(instance, "ErrorLogger");
if (logger == 0) {
    return; // 创建失败
}

LogSetLevel(instance, logger, 4);
LogSetBaseDirectory(instance, logger, "D:\\logs");
LogSetFileNamePattern(instance, logger, "app_{date}.log");

LogErrorEx(instance, logger, "连接数据库失败: timeout after 5000ms");
LogFlush(instance, logger);
LogDestroyInstance(instance, logger);
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 long LogCreateInstance(long ola, string instanceName);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogSetLevel(long ola, long loggerHandle, int level);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogSetBaseDirectory(long ola, long loggerHandle, string baseDirectory);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogSetFileNamePattern(long ola, long loggerHandle, string fileNamePattern);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogErrorEx(long ola, long loggerHandle, string message);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogFlush(long ola, long loggerHandle);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogDestroyInstance(long ola, long loggerHandle);

long instance = CreateCOLAPlugInterFace();
long logger = LogCreateInstance(instance, "ErrorLogger");
if (logger == 0) return;

LogSetLevel(instance, logger, 4);
LogSetBaseDirectory(instance, logger, @"D:\logs");
LogSetFileNamePattern(instance, logger, "app_{date}.log");
LogErrorEx(instance, logger, "连接数据库失败: timeout after 5000ms");
LogFlush(instance, logger);
LogDestroyInstance(instance, logger);
python
from ctypes import CDLL, c_int, c_int64, c_char_p

ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
ola.LogCreateInstance.restype = c_int64
ola.LogCreateInstance.argtypes = [c_int64, c_char_p]
ola.LogSetLevel.argtypes = [c_int64, c_int64, c_int]
ola.LogSetBaseDirectory.argtypes = [c_int64, c_int64, c_char_p]
ola.LogSetFileNamePattern.argtypes = [c_int64, c_int64, c_char_p]
ola.LogErrorEx.argtypes = [c_int64, c_int64, c_char_p]
ola.LogFlush.argtypes = [c_int64, c_int64]
ola.LogDestroyInstance.argtypes = [c_int64, c_int64]

instance = ola.CreateCOLAPlugInterFace()
logger = ola.LogCreateInstance(instance, b"ErrorLogger")
if logger == 0:
    raise RuntimeError("LogCreateInstance failed")

ola.LogSetLevel(instance, logger, 4)
ola.LogSetBaseDirectory(instance, logger, br"D:\logs")
ola.LogSetFileNamePattern(instance, logger, b"app_{date}.log")
ola.LogErrorEx(instance, logger, "连接数据库失败: timeout after 5000ms".encode("utf-8"))
ola.LogFlush(instance, logger)
ola.LogDestroyInstance(instance, logger)

返回值

返回值说明
1成功。
0失败。

注意事项

项目说明
ERROR 级别用于记录错误信息ERROR 级别用于记录错误信息,表示程序遇到了问题。
OLA_LOG_LEVEL_ERROR只有当日志级别设置为 OLA_LOG_LEVEL_ERROR (4) 或更低时才会输出。
LogError 的区别支持指定日志实例,适合多实例场景。
ERROR 级别的日志会立即刷新到文件(如果设置ERROR 级别的日志会立即刷新到文件(如果设置了自动刷新间隔)。
如果日志系统未初始化如果日志系统未初始化,第一次调用时会自动初始化。