① 如何简单创建日志文件
您可以创建日志文件,并使其包含与互操作性、程序加载和网络有关的诊断信息。通过设置注册表项,可以启用日志记录。首先,设置一个注册表项以启用常规日志记录,然后针对所需的日志记录组件和选项来设置注册表项。可以使用下列方法设置注册表项:使用 Visual Studio 中的远程注册表编辑器。在 .NET Compact Framework 2.0 Service Pack 1 中,使用远程性能监视器中的日志记录选项。有关远程性能监视器的更多信息,请参见 如何:在运行时监视性能。在 .NET Compact Framework 3.5 中,可以使用日志记录工具 NetCFLogging.exe,该工具提供了用于启用和禁用日志记录的简单的图形用户界面。此工具包括在 Power Toys for .NET Compact Framework 中。有关更多信息,请参见 Power Toys for .NET Compact Framework。使用 Registry 和 RegistryKey 类,.NET Compact Framework 2.0 版及更高版本支持这些类。下表对这些日志文件进行了总结。日志记录组件日志文件内容互操作记录 COM 互操作调用。提供有关平台调用和封送处理的信息。错误记录所有未处理的异常和本机异常。将错误记录到日志文件和 OutputDebugString 中。将为位于当前路径的每个程序集创建日志文件,并将其应用于当前会话。在第一次出现未处理的异常或本机异常之后,将覆盖日志文件。加载程序记录有关程序加载的信息。文件标头包含下列信息:应用程序名称。进程 ID(由 Windows Embedded CE 提供)。创建日志文件的本地日期和时间。其格式不是全局性的,而是区域性特定的。.NET Compact Framework 版本,例如 2.0.5021.00。与平台相关的信息,例如 Windows Embedded CE v5.0.1400 (CEPC) WinCE5x86 debug Dev i386 IJITv2。文件提供以下信息:强制状态(兼容性模式)。加载模块时为模块指定的信任级别。解析方法时失败。解析类型时失败。查找或加载程序集或模块时失败。程序集加载成功。无效的元数据版本。查找平台调用 DLL 时失败。在平台调用 DLL 中查找函数时失败。策略文件的名称,或者指出缺少该文件的事实。策略文件处理过程中的主要错误。托管程序集基于策略的重定向。此外,还可以包括有关全局程序集缓存的信息。网络记录网络流量。网络日志文件是二进制文件,如果没有 .NET Compact Framework 日志查看器 Logviewer.exe,则无法访问该文件。在 .NET Compact Framework 3.5 及更高版本中,该日志查看器包含在 Power Toys for .NET Compact Framework 中。有关更多信息,请参见 Power Toys for .NET Compact Framework。由于网络日志记录发生在 Windows 套接字层,因此日志文件只包含网络数据包信息。这包括通过网络发送的数据,其中有些可能是敏感数据,因而需要进行加密。终结器记录在垃圾回收器丢弃对象之前未释放这些对象的类名。.NET Compact Framework 3.5 及更高版本支持此日志。对象名不包含在日志中,原因是这些名称对于公共语言运行时 (CLR) 不可用。但是,未释放的对象的类名有助于识别这些对象。未释放的对象在应用程序中可能造成性能问题。说明:某些情况下,调用终结器的是 .NET Compact Framework 而不是应用程序代码。此文件包含以下信息:指示终结器何时对对象运行垃圾回收器的时间戳。被终结对象的类。跟踪记录 Windows Communication Foundation (WCF) 的代码异常。桌面 .NET Framework 支持三种日志记录:跟踪、消息处理和事件日志记录。.NET Compact Framework 上的 WCF 只支持通过跟踪日志记录来跟踪代码异常,但它不记录警告和错误消息。.NET Compact Framework 3.5 及更高版本支持此日志。默认情况下,系统会将日志文件写入包含被诊断的应用程序的目录。但是,您可以使用注册表项指定路径和其他选项,如下所示:使用其他路径写入日志文件。这需要安全注册表的访问权限。在日志文件名中包含应用程序名称。在日志文件名中包含进程 ID。日志文件名由以下几部分组成,其中组件 可以是“互操作”、“错误”、“加载程序”或“网络”、“终结器”或“跟踪”:netcf_应用程序名称_组件_进程 ID.log应用程序名称和进程 ID 为可选项,它们基于注册表设置。例如,对于名为 MyApp.exe 的应用程序,其加载程序日志文件可命名如下:netcf_MyApp_Loader_2066923010.log有关如何检查互操作日志文件和加载程序日志文件等日志文件的信息,请参见 日志文件信息。启用日志记录将以下 Enabled 项的值设置为 1:HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Enabled必须设置此项值才能启用六种日志记录:互操作、加载程序、错误、网络、终结器和跟踪。请注意,默认情况下,Logging 下的子项并不存在。可以通过将此值设置为 0(零)来关闭所有日志记录。指定日志文件路径(可选)将以下 Path 项的值设置为表示日志文件位置的字符串:HKLM\Security\.NETCompactFramework\Diagnostics\Logging\Path此项只能通过可写入安全注册表的应用程序来访问。如果未指定路径,系统会将日志文件写入包含应用程序的目录。在名称中包含应用程序(可选)将以下 UseApp 项的值设置为 1:HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\UseApp如果要运行多个应用程序并为每个应用程序获取单独的日志文件,则可以使用此项。如果有两个应用程序将日志文件写入同一目录,则当第二个应用程序运行时,较早的日志文件始终会被较新的日志文件覆盖。UseApp 项可以用作日志文件的区分符。在名称中包含进程 ID(可选)将以下 UsePid 项的值设置为 1:HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\UsePid如果要多次运行同一个应用程序并为每个实例创建单独的日志,则可以使用此项。此设置会在日志文件名中添加进程 ID,以使应用程序的每个实例都能用不同的名称创建新日志文件。在事件发生时记录事件(可选)将以下 Flush 项的值设置为 1:HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Flush设置此值后,公共语言运行时 (CLR) 便会在事件发生时立即将日志事件写入日志文件,而不是先将事件保存在缓冲区中,并在写满缓冲区时才写入日志文件。此设置会给应用程序的性能带来负面影响,并可能稍稍修改应用程序的计时。但是,它有助于诊断与应用程序故障或其他错误有关的问题,因为您可能需要查看导致错误的最后几个事件。如果不存在或未设置此项,则系统将只有在写满缓冲区后,才会向日志文件写入数据。
② QT中使用一个信号量来写日志文件
你的代码我是懒得看了;看了前面一点,就觉得你这写的有问题,没有充分利用QT带的功能。给你个我的思路:(1) 新启动一个QThread thread,该线程只运行一个事件循环(QEventLoop loop; loop.exec();)(2)将写日志文件功能单独抽象成一个继承QObject的类LogHelpclass LogHelp :public QObject{Q_OBJECTpublic:void Write(QString log){emit NotifyWrite(log);}signal:void NotifyWrite(QString log);public slot:void OnWrite(QString log){/*你的核心写文件代码*/}; (3)LogHelp logHelp 对象需要 movetothread 到(1)中创建的线程;logHelp.moveToThread(&thread);(4)重点:connect(&logHelp,SIGNAL(NotifyWrite(QString)),&logHelp,SLOT(OnWrite(QString)),Qt::QueuedConnection);如此你就可以在其它线程中直接调用logHelp .Write(log);不用管数据安全问题。代码手敲,可能有问题,只是告诉你个思路。这样写不用维护队列,使用的是信号和槽函数的异步队列方式。
③ delphi怎样写日志文件
写日志,其实就是文本文件的读写。
delphi 提供了几种文件操作功能函数,如果日志读写很频繁,可以考虑设置一个全局的文件变量,在程序运行前打开该文件:
varF:TextFile;//声明文本文件类型变量logFileName:='d:Log.txt';AssignFile(F,logFileName);
其后在需要的时候:
iffileexists(logFileName)thenappend(F)elserewrite(F);writeln(F,DateTimeToStr(Now)+':'+str);
④ 如何书写日志格式
日志格式规范日志文件的格式设定需要根据不同的服务器来设置: • APACHE或Tomcat 服务器 Apache 和Tomcat等采用默认格式即可 • IIS服务器1. 在网站“属性”窗口, “网站”标签中在“启用日志记录”前打勾,并在“活动日志格式”中选择“W3C扩展日志文件格式”。2.点击“活动日志格式”右侧的“属性”,设置“常规属性”。在“新建日志时间”选项选择“每天”,在“文件命名和回卷使用当地时间”前打勾。系统日志默认存放位置是“C:\WINDOWS\system32\LogFiles”,建议设置到一个容量大的非系统盘。3点击“活动日志格式”右侧的“属性”,设置“扩展属性”。在“扩展日志记录选项”里选择如下选项,并点击“确定”保存。(1) 日期(date)(2) 时间(time)(3) 客户端IP地址(c-ip)(4) 用户名(cs-username)(5) 方法(cs-method)(6) URI资源(cs-uri-stem)(7) URI查询(cs-uri-query)(8) 协议状态(sc-status)(9) 发送的字节数(sc-bytes)(10) 协议版本(cs-version)(11) 用户代理(csUser-Agent)(12) 引用站点(csReferer)更多说明,请参考网址:http://awstats.sourceforge.net/docs/awstats_faq.html#LOGFORMAT
⑤ 日志文件的写志数据如何存储
日志记录方式可以提供我们足够多定位问题的依据。对于一些复杂系统,例如数据库,日志可以承担数据备份、同步作用,很多分布式数据库都采用“write-ahead”方案,在节点数据同步时通过日志文件恢复数据。日志文件是不推荐和数据库存储在同一个硬盘的,因为一旦硬盘坏了就会一起死掉。当然,如果已经使用了带容错的RAID,甚至是盘柜之类的设备,那么可以放在一起没有太大问题。如果先写数据库,后写日志,但是在刚好写了数据库而未写日志的时候崩溃了,那么根据日志恢复出来的数据库就少了一条记录
⑥ 登记日志文件应遵循哪些原则,为什么
为保证数据库是可恢复的,登记日志文件时必须遵循两条原则: 1. 登记的次序严格按并发事务执行的时间次序。 2. 必须先写日志文件,后写数据库。 把对数据的修改写到数据库中和把写表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记下这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。所以为了安全,一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。这就是“先写日志文件”的原则。
⑦ 什么是日志文件为什么要设立日志文件
日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。
在计算机中,日志文件是记录在操作系统或其他软件运行中发生的事件或在通信软件的不同用户之间的消息的文件。记录是保持日志的行为。在最简单的情况下,消息被写入单个日志文件。
(7)写日志文件扩展阅读:
日志文件还可以用于组合来自多个源的日志文件条目。 这种方法与统计分析相结合,可以产生不同服务器上看起来不相关的事件之间的相关性。 其他解决方案采用网络范围的查询和报告。
许多操作系统,软件框架和程序包括日志系统。广泛使用的日志记录标准是在因特网工程任务组(IETF)RFC5424中定义的syslog。 syslog标准使专用的标准化子系统能够生成,过滤,记录和分析日志消息。
⑧ 一般日志文件应该怎么写
:可以再工作图标文档中建立每日工作记录,第一栏,日期;第二栏,工作内容;第三栏,工作进度等。 如果用文字表述,包括每日的工作计划,一般先回顾下昨日的工作内容,完成情况如何,哪些需要持续追踪的。再安排下今日的工作内容