主题
设置文件名模式 - LogSetFileNamePattern
函数简介
设置日志文件的命名模式,支持多种占位符实现动态文件命名。
接口名称
LogSetFileNamePatternDLL调用
c
int32_t LogSetFileNamePattern(int64_t instance, int64_t loggerHandle, const char* fileNamePattern);参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| instance | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
| loggerHandle | 长整数型 | 日志实例句柄(0 表示默认实例)。 |
| fileNamePattern | 字符串 | 文件名模式。 |
支持的占位符
| 占位符 | 说明 | 示例 |
|---|---|---|
{date} | 当前日期(YYYY-MM-DD) | 2026-03-02 |
{time} | 当前时间(HH-MM-SS) | 14-30-45 |
{datetime} | 日期时间(YYYY-MM-DD_HH-MM-SS) | 2026-03-02_14-30-45 |
{module} | 模块名称(通过 LogSetModuleName 设置) | network |
{level} | 日志级别 | INFO |
{index} | 文件序号(从 1 开始递增) | 1, 2, 3... |
{pid} | 进程ID | 12345 |
{year} | 年份(4位数字) | 2026 |
{month} | 月份(01-12) | 03 |
{day} | 日期(01-31) | 02 |
{hour} | 小时(00-23) | 14 |
{minute} | 分钟(00-59) | 30 |
{second} | 秒(00-59) | 45 |
常见模式示例
| 模式 | 展开后示例 | 适用场景 |
|---|---|---|
app_{date}.log | app_2026-03-02.log | 按天一份日志 |
{module}_{date}_{index}.log | network_2026-03-02_1.log | 多模块 + 按大小滚动 |
log_{datetime}_{pid}.log | log_2026-03-02_14-30-45_12345.log | 多进程互不覆盖 |
{year}{month}{day}_{level}.log | 20260302_INFO.log | 按级别拆分文件名 |
目录由 LogSetBaseDirectory / LogSetDirMode 决定;本接口只设文件名(不要传完整路径,路径请用 LogSetFilePath / LogSetBaseDirectory)。
示例
推荐联动顺序:
LogSetBaseDirectory → LogSetModuleName → LogSetFileNamePattern
→ LogSetRotationMode / LogSetMaxFileSize → 写日志 → LogGetCurrentFilePathSDK 调用
cpp
#include "OLAPlugServer.h"
#include <cstdio>
OLAPlugServer ola;
const int64_t logger = 0; // 默认实例;多实例用 LogCreateInstance 返回的句柄
// 1. 根目录 + 模块名(供 {module} / 按模块分子目录使用)
ola.LogSetBaseDirectory(logger, "D:\\logs");
ola.LogSetModuleName(logger, "network");
// 2. 文件名模式(占位符须小写)
// 展开示例:network_2026-03-02_1.log
int ret = ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log");
if (ret != 1) {
return;
}
// 3. 按大小 + 每日分割;单文件上限 50MB
ola.LogSetRotationMode(logger, 1 | 2); // SIZE | DAILY
ola.LogSetMaxFileSize(logger, 50);
// 其他常用模式(按需二选一即可):
// ola.LogSetFileNamePattern(logger, "app_{date}.log");
// ola.LogSetFileNamePattern(logger, "log_{datetime}_{pid}.log");
// ola.LogSetFileNamePattern(logger, "{year}{month}{day}_{level}.log");
ola.LogInfo("server started");
std::string path = ola.LogGetCurrentFilePath(logger);
std::printf("current log file: %s\n", path.c_str());csharp
using System;
using OLAPlug;
var ola = new OLAPlugServer();
long logger = 0;
ola.LogSetBaseDirectory(logger, @"D:\logs");
ola.LogSetModuleName(logger, "network");
// 展开示例:network_2026-03-02_1.log
int ret = ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log");
if (ret != 1) return;
ola.LogSetRotationMode(logger, 1 | 2); // SIZE | DAILY
ola.LogSetMaxFileSize(logger, 50);
// 其他模式:
// ola.LogSetFileNamePattern(logger, "app_{date}.log");
// ola.LogSetFileNamePattern(logger, "log_{datetime}_{pid}.log");
ola.LogInfo("server started");
Console.WriteLine("current log file: " + ola.LogGetCurrentFilePath(logger));python
from OLAPlugServer import OLAPlugServer
ola = OLAPlugServer()
logger = 0
ola.LogSetBaseDirectory(logger, r"D:\logs")
ola.LogSetModuleName(logger, "network")
# 展开示例:network_2026-03-02_1.log
ret = ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log")
if ret != 1:
raise RuntimeError("LogSetFileNamePattern failed")
ola.LogSetRotationMode(logger, 1 | 2) # SIZE | DAILY
ola.LogSetMaxFileSize(logger, 50)
# 其他模式:
# ola.LogSetFileNamePattern(logger, "app_{date}.log")
# ola.LogSetFileNamePattern(logger, "log_{datetime}_{pid}.log")
ola.LogInfo("server started")
print("current log file:", ola.LogGetCurrentFilePath(logger))java
import com.olaplug.OLAPlugServer;
OLAPlugServer ola = new OLAPlugServer();
long logger = 0;
ola.LogSetBaseDirectory(logger, "D:\\logs");
ola.LogSetModuleName(logger, "network");
// 展开示例:network_2026-03-02_1.log
int ret = ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log");
if (ret != 1) {
return;
}
ola.LogSetRotationMode(logger, 1 | 2); // SIZE | DAILY
ola.LogSetMaxFileSize(logger, 50);
ola.LogInfo("server started");
System.out.println("current log file: " + ola.LogGetCurrentFilePath(logger));go
import (
"fmt"
"github.com/ola/olaplug/olaplug"
)
ola, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
defer ola.ReleaseObj()
logger := int64(0)
ola.LogSetBaseDirectory(logger, `D:\logs`)
ola.LogSetModuleName(logger, "network")
// 展开示例:network_2026-03-02_1.log
ret := ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log")
if ret != 1 {
return
}
ola.LogSetRotationMode(logger, 1|2) // SIZE | DAILY
ola.LogSetMaxFileSize(logger, 50)
ola.LogInfo("server started")
fmt.Println("current log file:", ola.LogGetCurrentFilePath(logger))rust
use olaplug::OLAPlugServer;
let ola = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();
let logger = 0i64;
ola.log_set_base_directory(logger, r"D:\logs");
ola.log_set_module_name(logger, "network");
// 展开示例:network_2026-03-02_1.log
let ret = ola.log_set_file_name_pattern(logger, "{module}_{date}_{index}.log");
if ret != 1 {
return;
}
ola.log_set_rotation_mode(logger, 1 | 2); // SIZE | DAILY
ola.log_set_max_file_size(logger, 50);
ola.log_info("server started");
println!("current log file: {}", ola.log_get_current_file_path(logger));cpp
var ola = com("OlaPlug.OlaSoft")
var logger = 0
ola.LogSetBaseDirectory(logger, "D:\\logs")
ola.LogSetModuleName(logger, "network")
// 展开示例:network_2026-03-02_1.log
var ret = ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log")
if(ret == 1) {
ola.LogSetRotationMode(logger, 1 | 2) // SIZE | DAILY
ola.LogSetMaxFileSize(logger, 50)
ola.LogInfo("server started")
traceprint("current log file: " + ola.LogGetCurrentFilePath(logger))
}vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
logger = 0
ola.LogSetBaseDirectory logger, "D:\logs"
ola.LogSetModuleName logger, "network"
' 展开示例:network_2026-03-02_1.log
ret = ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log")
If ret = 1 Then
ola.LogSetRotationMode logger, 3 ' 1|2 = SIZE|DAILY
ola.LogSetMaxFileSize logger, 50
ola.LogInfo "server started"
TracePrint "current log file: " & ola.LogGetCurrentFilePath(logger)
End Iftext
.局部变量 ola, OLAPlug
.局部变量 ret, 整数型
.局部变量 logger, 长整数型
.局部变量 curPath, 文本型
ola.Create ()
logger = 0
ola.LogSetBaseDirectory (logger, “D:\logs”)
ola.LogSetModuleName (logger, “network”)
' 展开示例:network_2026-03-02_1.log
ret = ola.LogSetFileNamePattern (logger, “{module}_{date}_{index}.log”)
.如果真 (ret = 1)
ola.LogSetRotationMode (logger, 位或 (1, 2)) ' SIZE | DAILY
ola.LogSetMaxFileSize (logger, 50)
ola.LogInfo (“server started”)
curPath = ola.LogGetCurrentFilePath (logger)
调试输出 (“当前日志文件:”, curPath)
.如果真结束
' 其他常用模式:
' ret = ola.LogSetFileNamePattern (logger, “app_{date}.log”)
' ret = ola.LogSetFileNamePattern (logger, “log_{datetime}_{pid}.log”)aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var logger = 0;
ola.LogSetBaseDirectory(logger, "D:\\logs");
ola.LogSetModuleName(logger, "network");
// 展开示例:network_2026-03-02_1.log
var ret = ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log");
if(ret == 1){
ola.LogSetRotationMode(logger, 1 | 2); // SIZE | DAILY
ola.LogSetMaxFileSize(logger, 50);
ola.LogInfo("server started");
io.print("current log file: ", ola.LogGetCurrentFilePath(logger));
}text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
长整数 logger = 0
ola.LogSetBaseDirectory(logger, "D:\\logs")
ola.LogSetModuleName(logger, "network")
' 展开示例:network_2026-03-02_1.log
整数 ret = ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log")
如果真 (ret = 1)
{
ola.LogSetRotationMode(logger, 1 位或 2) ' SIZE | DAILY
ola.LogSetMaxFileSize(logger, 50)
ola.LogInfo("server started")
调试输出 ("当前日志文件:", ola.LogGetCurrentFilePath(logger))
}cpp
#include "OLAPlugServer.h"
#include <cstdio>
OLAPlugServer ola;
int64_t logger = 0;
ola.LogSetBaseDirectory(logger, "D:\\logs");
ola.LogSetModuleName(logger, "network");
int32_t ret = ola.LogSetFileNamePattern(logger, "{module}_{date}_{index}.log");
if (ret == 1) {
ola.LogSetRotationMode(logger, 1 | 2);
ola.LogSetMaxFileSize(logger, 50);
ola.LogInfo("server started");
std::string path = ola.LogGetCurrentFilePath(logger);
std::printf("current log file: %s\n", path.c_str());
}原生 DLL 调用
cpp
long instance = CreateCOLAPlugInterFace();
long logger = 0;
LogSetBaseDirectory(instance, logger, "D:\\logs");
LogSetModuleName(instance, logger, "network");
// 展开示例:network_2026-03-02_1.log
int ret = LogSetFileNamePattern(instance, logger, "{module}_{date}_{index}.log");
if (ret != 1) {
return;
}
LogSetRotationMode(instance, logger, 1 | 2); // SIZE | DAILY
LogSetMaxFileSize(instance, logger, 50);
LogInfo(instance, "server started");
// LogGetCurrentFilePath(instance, logger) → 如 D:\logs\network_2026-03-02_1.log
// 若返回字符串指针,需配合 GetStringFromPtr / FreeStringPtr 使用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 LogSetBaseDirectory(long ola, long loggerHandle, string baseDirectory);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogSetModuleName(long ola, long loggerHandle, string moduleName);
[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 LogSetRotationMode(long ola, long loggerHandle, int rotationMode);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogSetMaxFileSize(long ola, long loggerHandle, int maxFileSizeMb);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogInfo(long ola, string message);
long instance = CreateCOLAPlugInterFace();
long logger = 0;
LogSetBaseDirectory(instance, logger, @"D:\logs");
LogSetModuleName(instance, logger, "network");
int ret = LogSetFileNamePattern(instance, logger, "{module}_{date}_{index}.log");
if (ret != 1) return;
LogSetRotationMode(instance, logger, 1 | 2);
LogSetMaxFileSize(instance, logger, 50);
LogInfo(instance, "server started");python
from ctypes import CDLL, c_int, c_int64
ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
instance = ola.CreateCOLAPlugInterFace()
logger = 0
ola.LogSetBaseDirectory(instance, logger, b"D:\\logs")
ola.LogSetModuleName(instance, logger, b"network")
ret = ola.LogSetFileNamePattern(instance, logger, b"{module}_{date}_{index}.log")
if ret != 1:
raise RuntimeError("LogSetFileNamePattern failed")
ola.LogSetRotationMode(instance, logger, c_int(1 | 2))
ola.LogSetMaxFileSize(instance, logger, c_int(50))
ola.LogInfo(instance, b"server started")返回值
| 返回值 | 说明 |
|---|---|
1 | 成功。 |
0 | 失败。 |
注意事项
| 项目 | 说明 |
|---|---|
| 默认值 | app.log。 |
| 只设文件名 | 本接口参数是文件名模式,不是完整路径;目录用 LogSetBaseDirectory / LogSetFilePath。 |
| 文件分割时 | 文件分割时,如果模式中包含 {index},会自动递增序号。 |
如果模式中不包含 {index} | 如果模式中不包含 {index},分割时会自动在文件名后添加序号。 |
| 修改后立即生效 | 修改后立即生效,如果日志系统已初始化,会自动重新初始化。 |
| 建议避免使用操作系统不支持的特殊字符 | 建议避免使用操作系统不支持的特殊字符。 |
| 占位符区分大小写 | 占位符区分大小写,必须使用小写字母。 |
