lua 一个简单的table变量序列化和日志写入函数

lua将table类型变量转换成string类型函数serialize和一个简单的日志写入函数write_log

-- 定义日志文件路径和最大行数
local log_file = "/tmp/lua_log"
local max_lines = 20000  -- 设置最大行数-- 定义一个简单的table序列化函数
function serialize(tbl)local result = {}for k, v in pairs(tbl) do-- 处理键if type(k) == "string" and string.match(k, "^%a[%w_]*$") thentable.insert(result, k .. " = ")elsetable.insert(result, "[" .. tostring(k) .. "] = ")end-- 处理值if type(v) == "table" thentable.insert(result, "{" .. serialize(v) .. "},")elseif type(v) == "string" thentable.insert(result, string.format("%q", v) .. ",")elsetable.insert(result, tostring(v) .. ",")endendreturn table.concat(result)
end-- 检查并可能清空日志文件
local function check_and_clear_log()local f, err = io.open(log_file, "r")if not f thendbg("无法打开日志文件: " .. err)returnendlocal lines = {}for line in f:lines() dotable.insert(lines, line)endf:close()if #lines >= max_lines then-- 清空文件f, err = io.open(log_file, "w")if not f thendbg("无法打开日志文件以清空: " .. err)returnendf:close()end
end-- 写入日志
function write_log(message)check_and_clear_log()  -- 在每次写入前检查是否需要清空文件message = os.date("%Y-%m-%d %H:%M:%S - ") .. os.time().." - "..messagelocal f, err = io.open(log_file, "a+")if not f thendbg("无法打开日志文件进行追加: " .. err)returnendf:write(message .. "\n")  -- 写入消息并换行f:close()
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34777.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序介绍-以及写项目流程(重要)

前言:本篇文章介绍微信小程序以及项目介绍: 文章介绍:介绍了微信小程序常用的指令、组件、api。tips:最好按照官方文档来进行学习,大致可以我的目录来学习,对于写项目是没有问题的 微信小程序官方文档https…

Apache Dolphinscheduler可视化 DAG 工作流任务调度系统

Apache Dolphinscheduler 关于 一个分布式易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 DolphinScheduler 的主要特性如下: 易于部署,提供四种部署方式&am…

“原批教育家”原批之星鲁健的杰作——原批俱乐部

伟大的原批教育家——原批之星,名为鲁健,是一位在南京邮电大学智能科学与技术专业中崭露头角的杰出人物。他不仅以其卓越的黑客技术和对网络正义的执着而闻名,更是“远古四神”之一,以其对原批之力的深刻理解和不同见解&#xff0…

github深度学习项目复现教程

如何找感兴趣的项目? 使用github或papers with code搜索关键词“deep learning”等,最受欢迎的是stars数最多的 查看readme 是否清晰地描述了项目目标、使用的技术、安装步骤和运行方法 是否包含依赖项、所需数据集和训练模型等信息 1、准备环境 如…

在玩“吃鸡”的时候游戏崩溃要如何解决?游戏运行时崩溃是什么原因?

“吃鸡”游戏崩溃问题深度解析与解决方案:原因、修复与预防 在紧张刺激的“吃鸡”(即《绝地求生》)游戏中,突然遭遇游戏崩溃无疑会让玩家倍感沮丧。作为一名经验丰富的软件开发从业者,我深知游戏崩溃可能由多种因素引…

YOLOv8实战道路裂缝缺陷识别

本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对道路裂缝数据集进行训练和优化,该数据集包含丰富的道路裂缝图像样本…

数字赋能 自主创新 | 华望系统科技在2024年度“直通乌镇”全球互联网大赛上斩获大奖!

11月22日,2024年度“直通乌镇”全球互联网大赛颁奖典礼在浙江乌镇举行。杭州华望系统科技有限公司(以下简称“华望系统科技”)的参赛项目“基于模型的系统工程建模工具软件”先后经过初赛、复赛和决赛的激烈角逐,从来自全球27个国…

代际跃升丨Modbus转Profinet网关与伺服的智能之旅

本案例详细介绍了如何通过开疆智能Modbus转Profinet网关KJ-PNG-201实现GSHD系列高性能伺服驱动器与西门子S7-1200 PLC之间的连接与配置。在这个过程中,我们使用了西门子S7-1200 PLC作为控制核心,Modbus转Profinet网关作为通信桥梁,以及GSHD系…

反转链表||动静态链接

反转链表 II 第一种方法:使用数组顺序记录区间内节点的地址,然后双指针双向向内遍历节点地址,逐步交换节点存储数值。时间复杂度为on、空间复杂度为on class Solution { public:ListNode* reverseBetween(ListNode* head, int left, int ri…

SpringBoot入门:如何新建SpringBoot项目(保姆级教程)

在本文中,我们将演示如何新建一个基本的 Spring Boot 项目。写这篇文章的时候我还是很惊讶的,因为我发现有些java的初学者,甚至工作10年的老员工居然并不会新建一个SpringBoot项目,所以特别出了一篇文章来教大家新建一个SpringBoo…

分代ZGC介绍

背景 在JDK 11中作为实验性功能推出的ZGC(JEP 333: ZGC: A Scalable Low-Latency Garbage Collector ),经过10个版本的迭代,终于在24年9月GA的JDK 23中将分代模式调整为默认模式(JEP 474: ZGC: Generational Mode by …

Flume基础概念

目录 作用组件构成ClientFlowAgentSourceSinkEvent 和Log4j的区别与定位事务传出流程输入到sourcesource端输入Channel 接收输入到SinkSink输出 作用 Flume可以从各种来源(如日志文件、消息队列、网络数据、文件系统、数据库等)收集数据,并将…

解决IDEA的easycode插件生成的mapper.xml文件字段之间逗号丢失

问题 easycode插件生成的mapper.xml文件字段之间逗号丢失,如图 解决办法 将easycode(在settings里面的othersettings)设置里面的Template的mapper.xml.vm和Global Config的mybatisSupport.vm的所有$velocityHasNext换成$foreach.hasNext Template的mapper.xml.vm(…

策略模式实战 - 猜拳游戏

**可以整体的替换一套算法,这就是策略模式。**这样对于同一个问题,可以有多种解决方案——算法实现的时候,可以通过策略模式来非常方便的进行算法的整体替换,而各种算法是独立封装好的,不用修改其内部逻辑。 具体的实…

漫画之家Spring Boot:漫画资源的个性化推荐

4 系统设计 4.1系统设计主要功能 通过市场调研及咨询研究,了解了用户及管理者的使用需求,于是制定了管理员和用户等模块。功能结构图如下所示: 图4-1系统功能结构图 4.2数据库设计 4.2.1数据库设计规范 数据可设计要遵循职责分离原则&#…

C++:AVL树

文章目录 一、AVL树的概念二、AVL树的实现1、AVL树的节点2、 AVL的插入的过程3、平衡因子的更新 三、旋转1、右单旋2、左单旋3、右左双旋4、右左双旋 四、AVL树平衡检测五、AVL树查找 一、AVL树的概念 二、AVL树的实现 1、AVL树的节点 key,vaule的二叉搜索树,需要…

Vscode插件 :用于生成文件头部注释和函数注释

最近找到了一个好用的vscode生成注释的插件----koroFileHeader 1.在拓展中搜索,并且安装 2.找到setting.json 设置模板 点击ctrlp(windows and linus),commandp(mac) 输入 > Open Settings 点击第一个选项 并且用以下代码进行覆盖 // 头部注释 "file…

知从科技闪耀汽车智能底盘大会:共探软件安全新篇章

在汽车科技蓬勃发展的浪潮中,智能底盘技术正成为引领行业变革的关键力量。11月27日-28日,盖世汽车 2024 第四届汽车智能底盘大会盛大召开,上海知从科技有限公司受邀出席此次盛会,与众多汽车领域的精英齐聚一堂,共话智能…

LabVIEW密码保护与反编译的安全性分析

在LabVIEW中,密码保护是一种常见的源代码保护手段,但其安全性并不高,尤其是在面对专业反编译工具时。理论上,所有软件的反编译都是可能的,尽管反编译不一定恢复完全的源代码,但足以提取程序的核心功能和算法…

ABAP 类与对象 EXCEPTIONS与RAISE

文章目录 ABAP 类与对象 EXCEPTIONS与RAISE系统示例代码执行结果RAISE的系统文档测试 ABAP 类与对象 EXCEPTIONS与RAISE 系统示例 代码 CLASS cls DEFINITION.PUBLIC SECTION.CLASS-METHODS meth EXCEPTIONS exc. ENDCLASS.CLASS cls IMPLEMENTATION.METHOD meth....RAISE ex…