写操作系统的日志文件

Redis第二弹,服务器宕机,数据丢了怎么办? Redis作为内存型的数据库,虽然很快,依然有着很大的隐患,一旦服务器宕机重启,内存中数据还会存在吗?很容易想到的一个方案是从后台数据恢复这些数据,如果数据量很小,这倒是一个可行的方案。但是如果数据量过大,频繁的从后台数据库访问数据,压力很大;另外一方面恢复数据的时间极慢。对于Redis来说,实现数据的持久化和快速恢复是至关重要。今天这篇文章就来介绍一下Redis持久化的两种机制AOF日志、RDB快照。AOF()日志称之为写后日志,即是命令先执行完成,把数据写入内存,然后才会记录日志。AOF。 阅读详情

现在做的项目中有这个功能,查了一整天才弄懂了点,没接触过,连资料也不好找。参照资料和自己所做的程序,写篇简易的文档。

写操作系统的日志文件

1. 以 MC 为扩 展名 创 建一个包含消息描述的文本文件。 该 文件的格式非常特 别,简单介绍一下 ( 具体 细节 参 见 Platform SDK 文档 )
 
① 基本格式:
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
 MessageId=xxx
 SymbolicName=IDS_EVT_MYDEFINE
 Language=English
 
 mydefine event string goes here.if there's parameters use %1 %2...
 .
 //must use . to end one event message define.
 
 MessageId=xxx//next block...
 .
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
② 如果使用中文,在文件最初定义
LanguageNames =(Chinese=0x804:MSG00804)//0x804 为 CodePage , MSG00804 为定义文件名称( mc 输出的 .bin 文件)。然后替换基本格式中的 Language 字段,如下 Language=Chinese
 
说明:默认的语言是英语,此时"LanguageNames="那句可以省略;
%1,%2等表示从ReportEvent传来的参数;
注意注释时";"与";//"的不同用法.mc编译器会忽略";"后面的字符,但会把他们写到*.h文件里.
 
③ 如果支持多种语言,则如下定义
LanguageNames=(English=0x409:MSG00409)
LanguageNames=(Chinese=0x411:MSG00411)
MessageId=0x1
Severity=Error
Facility=Runtime
SymbolicName=MSG_BAD_COMMAND
Language=English
You have chosen an incorrect command.
Language=Chinese
.
  ④ 文件必须以一个空行结束,即在最后一个信息定义块的 ' .' 后加回车换行
 
 
2. 使用 mc 编译此文件 .
① mc.exe 是 VC 带的工具 ( 我装了 .NET ) ,路径 参考 :
C:/Program Files/Microsoft Visual Studio .NET 2003/Common7/Tools/Bin
② 进 dos ,使用 mc 编译文件。如果你的项目使用 UNICODE ,如下: mc myevt.mc ;否则必须加入命令选项: mc myevt.mc -A 。将生成的三个文件 myevt.rc myevt.h MSG00804.bin 。
 
3 .制作好这三个文件之后。制作 DLL 。(只用过通过制作 DLL 的方法来写 log ,所以只记录这方面内容。)
用 vc 生成一个空 win32dll 框架 , 将生成的三个文件 加 进 来 编译。得到一个 DLL 文件。
 
4. 在注册表中添加自己的键: HKEY_LOCAL_MACHINE /SYSTEM/CurrentControlSet/Services/EventLog/Application/ myevt (自定) , 设上值: d:/ myevt .dll ( DLL 文件位置),可用 API 函数( RegCreateKeyEx , RegSetValueEx )。
 
5. 用 RegisterEventSource( NULL," myevt " ) 打开事件源,返回一句柄,然后以此句柄 ReportEvent ,即完成日志的写入。可在事件管理器中察看:右键我的电脑 → 管理 → 系统工具 → 事件视图。具体事件是属于“应用程序”,“系统”还是“安全”,则看 ReportEvent 时的参数了。
介绍完毕,非常混乱,附上自己做的实例,希望对大家有所帮助:
 
附录:
Ⅰ.mc 文件: MyEvent.mc
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
;//begin==============================================================
;#ifndef __ERRLOG_H__
;#define __ERRLOG_H__
LanguageNames=(Chinese=2052:MSG0052)
 
SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS
               Informational=0x1:STATUS_SEVERITY_INFORMATIONAL
               Warning=0x2:STATUS_SEVERITY_WARNING
               Error=0x3:STATUS_SEVERITY_ERROR
              )
 
MessageId=1000 Severity=Success SymbolicName=CM_ERR_LOG_FAILED
Language= Chinese
● 错误输出的内容是 :「%1」.
● 错误的原因是 :「%2」.
.
 
;#endif //__ERRLOG_H__
;//end================================================================
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
 
Ⅱ. 程序
#define KEY_NAME   _T("Acr_ErrLog") /* Key 名 */
#define EVENT_ID   1000              /* 事件 ID */
#define ENTRY      _T("EventMessageFile")      /* 子键 */
#define REG_PATH   _T("SYSTEM//CurrentControlSet//Services//EventLog/
//Application// My_Event ")  /* 注册表路径 */
 
static int RegSet() ;
 
Main()
{
         char szTempMsg [10] = “ 文件打开出错 ” ;
         char szErr [10] = “ 没有权限 ” ;
 
          if ( ACR_RET_NORMAL == RegSet() )
         {
                   WriteEventLog( szTempMsg, szErr );
         }
}
 
/* 参照上面说明 4 :在注册表中添加自己的键, 设上值 */
int RegSet()
{
         HKEY     hkKey;
         LONG     lResult;                    /* 返回值           */
         DWORD    dwDisposition;              /* Key 是否已经存在的标志 */
         char     szFilePath[MAX_PATH];       /* DLL 文件的位置    */
 
         /* 打开指定的注册表 Key ,如果 Key 不存在的话新建一个 。 */
         lResult = RegCreateKeyEx( HKEY_LOCAL_MACHINE,
                   REG_PATH, /* 参照 define */
                   0,
                   NULL,
                   REG_OPTION_NON_VOLATILE,
                   KEY_ALL_ACCESS,
                   NULL,
                   &hkKey,
                   &dwDisposition );
 
         if( lResult )
         { 
                   return ACR_RET_SYSERROR;
         }
 
         /* DLL 文件路径取得 */
         GetAppPath( szFilePath );
          strcat( szFilePath, _T("//") );
          strcat( szFilePath, _T(" MyEvent .dll ") );
 
         /* 指定されたレジストリキーに所属する、
         指定されたレジストリエントリのデータを設定します。 */
         if( ERROR_SUCCESS != RegSetValueEx( hkKey,
                                  ENTRY, /* 参照 define */
                                  0,
                                  REG_EXPAND_SZ,
                                 (LPBYTE)szFilePath,
                                 (DWORD)_tcslen( szFilePath )+1) )
         {
                   return ACR_RET_SYSERROR;
         }
 
         RegCloseKey( hkKey );
         return ACR_RET_NORMAL;
}
 
/* 功能参照上面说明 5 。参数为要写入日志的内容, 1 为错误内容, 2 是错误原因 */
void WriteEventLog( char* szMsg, char* szErr )
{
         HANDLE hEventLog; 
         char *szEventLogArgs[2];    /* 写入的内容 */
 
         /* 内容处理 */
         if( NULL != szMsg )
         {
                   szEventLogArgs[0] = szMsg;
         }
         else
         {
                   szEventLogArgs[0] = _T("NULL");
         }
 
         if( NULL != szErr )
         {
                   szEventLogArgs[1] = szErr;
         }
         else
         {
                   szEventLogArgs[1] = _T("NULL");
         }
 
         /* 打开事件源 */
         hEventLog = RegisterEventSource( NULL, KEY_NAME );
 
         if( NULL != hEventLog )
         {
                   /* 内容写入 */
                   ReportEvent( hEventLog,
                            EVENTLOG_INFORMATION_TYPE,
                            0,
                            SPCM030_EVENT_ID,
                            NULL,
                            2,
                            0,
                            szEventLogArgs,
                            NULL );
         }
 
         DeregisterEventSource(hEventLog);
}
 
日志文件系统 非常好的一篇文档,讲的是日志文件系统的设计与实现,对阅读F2F2S,JFS这些文件系统大有裨益 立即下载

相关推荐

Windows tail查看日志命令工具.rar

软件介绍: 以WINDOWS视图模式使用的tail日志查看工具,不是以前以命令行模式运行的查看运行日志,能够直接在Windows下的运行的小工具。使用方法:下载后解压,把tail.exe 复制到 目录:C:\Windows\System32 下直接输命令就可以了: tail -f 文件路径

自制操作系统日志——第五天

今天是该系列的第五天。今天的任务就是1、采用结构体形式;2、利用像素矩阵的方法进行字符串的显示;3、GDT/IDT的初始化。

qq_43696276的博客 501

传感器:MQ-5燃气模块测量燃气值(底部附代码)

本篇文章介绍使用MQ-5燃气模块测量燃气值,CPU还是选择单片机,MQ-5主要使用的技术为ADC,燃气对于单片机来说是模拟信号,需要转换为数字信号,再经过相关计算公式将燃气模拟值转换成对应的燃气数值,便于人们方便查看。例如家庭使用燃气模块测量燃气值,如果燃气值超过一定的范围,可以外设一个报警装置,保证家庭的生命安全。(1)ADC(analog to digital converter)即模数转换器,它可以将模拟信号转换为数字信号。按照其转换原理主要分为逐次逼近型、双积分型、电压频率转换型三种。STM32F1

Mr_zhang1911116的博客 1万+

“自动修复“无法修复你的电脑,日志文件:C:\Windows\System32\Logfiles\Srt\SrtTrail.txt

解决"自动修复"无法修复你的电脑,日志文件:C:\Windows\System32\Logfiles\Srt\SrtTrail.txt

lznmvp777的博客 7万+

关于MII、RMII、GMII、RGMII、PHY、网络变压器、RJ45的硬件总结

文章目录前言一、网络传输结构及原理1.以太网的工作原理2.TCP/IP协议3.数据链路层(MAC)二、介质独立接口MII,RMII,GMII,RGMII1.MII(Media Independent interface)2.RMII(Reduced Media Independent Interface)3.GMII(Gigabit Medium Independent)4.RGMII(Reduced Gigabit Media Independent Interface)三、物理层芯片(PHY)二、使用步

weixin_44415816的博客 3万+

Versal ACAP NoC实战:像理解计算机网络一样配置AXI NoC,打通PS与PL数据通路

本文深入探讨了Versal ACAP NoC的配置与优化,通过计算机网络类比解析NoC架构,详细介绍了在VD100开发板上配置AXI NoC实现PS与PL数据交互的实战步骤。文章涵盖NoC组件功能、Vivado配置技巧、性能优化方法及常见问题解决方案,帮助开发者高效打通Versal芯片的数据通路。

weixin_42665255的博客 294

Windows 10 开机失败 C:\Windows\System32\Logfiles\Srt\SrtTrail.txt 日志问题

问题: 早上打开 Windows 10 电脑,遇到如下问题: 解决 尝试点击高级 -> 进入命令行模式 -> 执行 sfc /scannow 但是遇到 windows 资源保护无法执行该请求 尝试点击高级 -> 启动修复 -> 禁用驱动器签名加载,启动成功 可能原因 装了驱动精灵或者昨晚自动更新时把电脑强制关机了 参考 https://tieba.baidu.com/...

xchenhao 的博客 6万+

《计算机网络》课程大作业- 《小区局域网的设计和规划》

8.1首先,在满足用户需求方面,通过详细的需求分析,充分考虑了居民和物业管理的不同业务需求。对于居民,无论是日常的高清视频播放、在线游戏、远程办公还是智能家居设备的连接,网络都能提供稳定的高速带宽支持。从有线网络的千兆以太网技术保障稳定的有线连接,到无线网络采用 Wi - Fi 6 技术确保无线覆盖区域的高速和低延迟,满足了居民多样化的娱乐和生活需求。对于物业管理,安防监控系统的实时数据传输、物业办公自动化系统的流畅运行以及社区信息的及时发布等业务,都有针对性的网络设计。

lisangsimida的博客 2600

电脑蓝屏 无法修复你的电脑日志文件 SrtTrail.txt 解决方法 避免重装系统

今天遇到问题 首先使用windows蓝屏中高级选项 自动修复 反复修复几次,如果解决不了 在高级选项中找到命令行模式 切换到 C:\Windows\System32\LogFiles\Srt 目录 命令行模式直接输入C:\Windows\System32\LogFiles\Srt 就可以切换到这个目录 (不行的话用cd C:\Windows\System32\LogFiles\Srt) 命令行模式type SrtTrail.txt 查看日志内容 当时恢复的时候没拍照,type SrtTra

张必安的博客 8万+

YOLOv11改进 | 添加注意力篇 | 结合2024最新Mamba注意力机制MLLA助力yolov11有效涨点含二次创新C2PSA(全网独家首发改进)

本文给大家带来的改进机制是结合号称超越Transformer架构的Mamba架构的最新注意力机制MLLA,本文将其和我们YOLOv11进行结合,的原理是通过将Mamba模型的一些核心设计融入线性注意力机制,从而提升模型的性能。具体来说,MLLA主要整合了Mamba中的“忘记门”(forget gate)和模块设计(block design)这两个关键因素,同时MLLA通过使用位置编码(RoPE)来替代忘记门,从而在保持并行计算和快速推理速度的同时,提供必要的位置信息。

Snu77的博客 3870

SPI为什么不需要加上拉电阻

大家好,我是记得诚。I2C因为其开漏的结构,无法输出高电平,所以外部加上拉电阻。我们在使用SPI的时候,发现是不需要加上拉电阻的。主要因为SPI多为推挽的结构,推挽电路,高低电平都可以输出,所以外部不需要加上拉电阻。推挽电路可以用2个三极管或者2个MOS管搭建而成。

记得诚 2630

【转载】C:\WINDOWS\System32\Logfiles\Srt\SrtTrail.txt” 解决方案

将原文搬运在到优快云, 希望更多的有需要的小伙伴看到。最近电脑崩溃了一次,蓝屏无法开机。幸好在网上找到解决办法。

wps6129的博客 4万+

【新能源汽车DCDC变换器测试优化全攻略:解决电能质量/发热/过充等核心痛点】

高压直流转12V低压的DCDC变换器是新能源汽车电源系统的核心枢纽,承担着为整车低压附件、控制器及12V蓄电池供电/补电的关键作用。在新能源汽车乘用车、商用车等不同车型实际运营中,因PDU内DC/AC等模块干扰、DCDC自身设计缺陷、整车匹配性不佳及测试验证不充分,频发12V输出电能质量差导致后端元器件烧毁、变换器发热严重、蓄电池过充/欠充、智能补电功能失效等问题,还伴随低压侧电压瞬跌/浪涌、电磁干扰超标、振动后接触不良、高温下效率骤降等行业高频故障,直接影响整车可靠性和运营安全性。本文基于国标。

优快云-新能源汽车研发测试专业博主 1268

oracle lgwr 如何写redolog

例如一个实例只有一个redo thread,即一个LGWR,对吧? 但是一个日志组,假设里面有3个日志成员,那么一个LGWR如何同时向3个日志成员写呢? 明显做不到啊?在一个时间段内,一个thread只能写一个日志成员吧? from:Yong Huang log file headers are written sequentially (wait event: log file sing

Lixora's DB Home 1225

使用字体解密技术爬取懂车帝二手车数据

本文介绍了一种针对懂车帝二手车平台的字体加密数据采集方案。通过抓包分析,识别出关键API接口并解析了字体加密机制,成功实现了价格等敏感数据的解密。方案采用requests库发送POST请求获取JSON数据,利用fontTools解析字体映射关系,建立加密字符到真实数字的转换算法。程序支持多页采集,提取车辆名称、价格、年份等12个维度的信息,并自动保存为Excel格式。技术亮点包括动态字体解析、健壮的数据处理和分页优化,为二手车市场分析提供了可靠的数据支持。文中特别强调数据采集的合法合规性,建议仅用于学术研究

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1313

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Innodb Double Write

Innodb使用的一种非常有趣的技术是称为“doublewrite”的技术。这意味着Innodb在执行表空间写入时会写入两次数据 - 对日志文件的写入只执行一次。 那么为什么需要双写呢?在部分页面写入的情况下,需要存档数据安全性。Innodb不会将完整页面记录到日志文件中,而是使用所谓的“生理”日志记录,这意味着日志记录包含操作的页码以及操作数据(即更新行)和日志序列信息。这种日志记录结构是ge...

weixin_30414305的博客 118

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mysql数据库突然变慢_数据库正常运行,突然变慢的解决思路

数据库正常运行,突然变慢的解决思路:1、查看数据库版本(select * from v$version)2、查看操作系统的进程(top,ps -ef)3、查看操作系统的IO情况(sar 1 10)4、制作awr报表,查看报告在报告中:EventWaits%Time -outsTotal Wait Time (s)Avg wait (ms)Waits /txncontrol file parall...

weixin_39790168的博客 2235

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

linux 同步IO: sync、fsync与fdatasync

传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后待其到达队首时,才进行实际的I/O操作。这种输出方式被称为延迟写(delayed write)(Bach [1986]第3章详细讨论了缓冲区高速缓存)。 延迟写减少了磁盘读写次数,但是却降低了文件内容的更新速度,使得欲

wenj12的博客 548

impdp报错: ORA-39064: 无法写入日志文件 ORA-29285: 文件写入错误

windows平台下,oracle 11.2.0.1在使用impdp向测试环境导入数据的时候,报出如下错误:     错误原因: 数据泵在写日志文件的时候,使用的是数据库字符集。如果客户端的环境变量NLS_LANG得值和数据库字符集不一致的话,日志中显示的表名称可能和终端屏幕输出的不一致。数据泵内部使用的是包UTL_FILE,在和NLS转换的时候可能不能输出字符。 #查看测试库 ...

weixin_34321977的博客 882

Oracle数据库恢复:归档日志损坏案例一则

链接:http://www.eygle.com/archives/2010/11/recover_archivelog_corruption.html 最近在紧急故障处理时,帮助用户恢复数据库遇到了一则罕见的归档日志损坏案例,在这里和大家分享一下,看看是否有人遇到过类似的问题。 在进行归档recover时,数据库报错,提示归档日志损坏: *** Corrupt block seq:...

javayestome 167

ext显示服务器文件,Linux 服务器操作系统中常见的Ext3文件系统

Ext3文件系统是直接从Ext2文件系统发展而来,目前Ext3文件系统已经非常稳定可靠,它完全兼容Ext2文件系统,用户可以平滑地过渡到一个日志功能健全的文件系统。Ext3日志文件系统的思想就是对文件系统进行的任何高级修改都分两步进行。首先,把待写块的一个副本存放在日志中;其次,当发往日志的I/O 数据传送完成时(即数据提交到日志),块就写入文件系统。当发往文件系统的I/O 数据传送终止时(即数据...

weixin_42515364的博客 290

linux 关机 关机_意外关机如何危害Linux计算机?

linux 关机 关机Are unexpected shutdowns as harmful to Linux as they are to other operating systems? Read on as we investigate the effects of catastrophic system shutdowns on Linux file systems. 意外关闭是否对Lin...

cuma1988的博客 667

linux操作系统--如何查看超大日志文件

如果使用`cat`命令查看日志文件时发现内容不全,可能是因为日志文件太大,导致终端无法显示所有内容。在这种情况下,您可以使用`less`或`more`命令来查看日志文件的内容。

MHD0815的博客 2449

从“一步一步写操作系统”到“一步一步抄操作系统”

前段时间在阅读《一步一步写嵌入式操作系统》,按照书本的内容一步一步写操作系统。不过在写的过程中比较纠结,因为《一步一步写嵌入式操作系统》一书提供了完整的样例代码,完全按照书中的内容一句一句敲代码视乎比较愚蠢,像小学的时候抄《小学生守则》一样。如果不敲代码,直接将网上下载的样例代码编译运行一遍又没有什么效果,不能深入理解其中原理。于是产生了一步一步“抄”一个操作系统的想法,基本做法就是按照《一步一步

keyboardOTA的专栏 3420
下一篇: 内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
rye_grass
博客等级 码龄20年 21粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值