一个简单的日志方法

FILE *g_fileLog = NULL;
void LogInit()
{
    CString sLogPath = GetModulePath();
    sLogPath += L"\\log.txt";

    // 事实证明,这里一写要有t,ccs=UTF-8才能正确写出wchar_t
    g_fileLog = _tfopen(sLogPath, L"at,ccs=UTF-8");
}

bool WriteLog(LPCTSTR format, ...)
{
    time_t tm = time(0);

    TCHAR outBuf[1024] = {0};
    int res = _tcsftime(outBuf, 128, _T("[20%y年%m月%d日 %H:%M:%S] "), localtime(&tm));

    TCHAR lpszInfoBuf[1024] = {0};
    va_list args;
    va_start (args, format);
    _vstprintf_s(lpszInfoBuf, 1024, format, args);
    va_end (args);

    _tcscat(outBuf, lpszInfoBuf);
    _tcscat(outBuf, _T("\r\n"));
    fwrite(outBuf, sizeof(TCHAR), _tcslen(outBuf), g_fileLog);

    fflush(g_fileLog);
    return true;
}

void LogClose()
{
    fclose(g_fileLog);
}

这是的GetModulePath 是一个自己写的函数,就是获取当前程序的目录。

使用的时候先调用LogInit(); 程序关闭的时候调用LogClose();

使用示例:

WriteLog(L"打开了%d文件", 10);

时间: 2024-10-14 10:54:16

一个简单的日志方法的相关文章

Linux下一个简单的日志系统的设计及其C代码实现

1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回值及其执行情况.脚本执行及调用情况等.通过阅读日志文件,我们能够较快地跟踪程序流程,并发现程序问题. 因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对一个软件开发工程师的基本要求. 本文详细地介绍了Linux下一个简单的日志系统的设计方法,并给出了其C代码实现.本文为相关开发项目Linux

通过编写一个简单的日志类库来加深了解C#的文件访问控制

在程序的开发调试过程及发布运行后的状态监控中,日志都有着极其重要的分量,通过在关键逻辑节点将关键数据记录到日志文件当中能帮助我们尽快找到程序问题所在.网上有不少专业成熟的日志组件可用,比如log4net和nlog等,由其专业及受欢迎程度可见日志在一个程序中的重要性. 我只用过log4net,而在用log4net写日志的过程中慢慢觉着太繁琐了点,不就写个日志吗?为毛搞得那么复杂?各种配置让我有点抓狂. 于是我就想,自己来吧! 首先分析一下一个基本的日志类库应该具有的基本功能及实现的时候需要注意和解

Java实现一个简单的缓存方法

缓存是在web开发中经常用到的,将程序经常使用到或调用到的对象存在内存中,或者是耗时较长但又不具有实时性的查询数据放入内存中,在一定程度上可以提高性能和效率.下面我实现了一个简单的缓存,步骤如下. 创建缓存对象EntityCache.java public class EntityCache {   /**    * 保存的数据    */   private Object datas;   /**    * 设置数据失效时间,为0表示永不失效    */   private long time

Linux初级脚本:一个简单的日志核查脚本

领导交代任务,要每天检查定时任务有没有执行.虽然简单但太繁琐,写了个脚本偷懒.顺便学习几个bash知识点.温故知新吧. #检查前一天的crontab日志有没有执行JOB1和JOB2两个定时任务 #检查数据库中的数据是否及时清理完 #!/bin/bashdeclare -i DB_STATUS=0 #由于日志日期只有月.日有效,时间不作判断,因此使用date -d参数格式化时间输出. #由于date命令用于grep,中间带空格,无法直接拼接,必须先赋予一个变量,然后用双引号标注该变量作为grep参

怎么把mp4转换成gif格式?教你一个简单的解决方法

怎么把mp4转换成gif格式当我们有关于mp4格式的文档怎么转换成gif格式的呢?下面小编就简单给大家介绍一下. 辅助工具:迅捷PDF在线转换器 步骤一:我们可以将需要转换的mp4格式的文件进行保存到桌面上: 步骤二:然后通过在浏览器上的搜索进入到迅捷PDF在线转换器在线网站中,在导航栏中我们找到音视频转换中的mp4转gif,然后进入即可:步骤三:然后进行文件的参数的设置,将mp4转换的视频格式参数进行修改好:步骤四:然后将视频文件选到界面中去,选择直接拖动视频文件或是点击文件进行上传即可:步骤

SD卡/U盘分区坏了怎么办?告诉大家一个简单的恢复方法

前言: 以前工作的过程中经常会借U盘给开发同学使用,结果等到还回来后,发现U盘的可用的空间变得很小了,可是插到电脑上发现明明磁盘里也没文件呀,格式化后发现还是不管用,百思不得其解~~ 上网研究了老半天才解决了,现在就将之前U盘损坏的恢复方法总结如下,供参考,哈哈哈~~ [以下以SD卡恢复为例,U盘恢复方法类似] 方法/步骤: 1.卸载SD卡分区 在使用fdisk命令前,请使用如下命令卸载boot分区和rootfs分区: Host# umount /media/boot Host# umount

.net通过控制台演示一个简单的拓展方法

1.拓展方法是一种特殊的静态方法 2.拓展方法必须在静态类中定义 3.拓展方法的优先级必须低于同名的类方法 4.拓展方法只能在特定的命名空间有效 5.除非必要不要滥用扩展方法 namespace ConsoleApplication1{    class Program     {       static void Main(string[] args)       { //扩展方法          string s = "asdasdas";          Console.W

代码片--实现一个简单的模版方法设计模式(获取一段程序运行的时间)

package com.dreamy.day03; /** * @author dreamy * 需求:获取一段程序运行的时间 * 原理:获取程序开始和结束的时间并相减即可. * 获取时间:System.currentTimeMillis() * * * 当代码完成优化后,就可以解决这类问题 * 这种方式叫做模版方法设计模式. * * 什么是模版方法呢? * 在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用的不确定的部分, * 那么这时就将不确定的部分暴露出去,由该

由一个简单需求到Linux环境下的syslog、unix domain socket

本文记录了因为一个简单的日志需求,继而对linux环境下syslog.rsyslog.unix domain socket的学习.本文关注使用层面,并不涉及rsyslog的实现原理,感兴趣的读者可以参考rsyslog官网.另外,本文实验的环境实在debian8,如果是其他linux发行版本或者debian的其他版本,可能会稍微有些差异. 需求: 工作中有一个在Linux(debian8)环境下运行的服务器程序,用python语言实现,代码中有不同优先级的日志需要记录,开发的时候都是使用pytho