一个好用的日志工具类

以下是我做的一个比较实用精巧的日志类,还没完善

/**
* @file     Logger.h
* @author   yangjb
* @date     2007/08/24
* @version  0.0.1
* @brief    日志输出辅助类
*
* Copyright? Yangjb. All rights reserved.
*
* Change Log:
* <pre>
*     author       time            version    description
* --------------------------------------------------------------------------------------
*     yangjb       2007/08/24      0.0.1      create
* </pre>
*/

#ifndef _LOGGER_HEADER_
#define _LOGGER_HEADER_

#include <iostream>
#include <ostream>
#include <fstream>
#include <string>

using namespace std;

template<typename CharT_ = char>
class CLogger
{
public:
    enum OUTPUT_FLAGS {of_none = 0,
                       of_pre_date = 1,
                       of_pre_time = 2,
                       of_pre_datetime = 4,
                       of_app_return = 8};
    /**
     * @brief 调试输出标志
     */
    static bool bDebug;
   
    /**
     * @brief 流输出重载运算, 实现流方式输出日志
     * @param[in]  t   输出日志信息
     */
template<typename T>
    CLogger& operator<< (const T& t)
{
if (m_bOutputFlag)
        {
    *m_plogstream << t;
}
return *this;
}
   
    /**
     * @brief 缺省构造函数, 使用cout方式做为日志输出
     */
    CLogger()   
    {
        m_plogstream = &cout;
m_bOutputFlag = bDebug;
    }
   
    /**
     * @brief 构造函数, 使用特定文件做为日志输出流向
     */
    CLogger(string filename, int fileflag = 0)   
    {
        m_plogstream = new basic_ofstream<CharT_>(filename.c_str());
m_bOutputFlag = bDebug;
    }
   
    /**
     * @brief 析构函数
     */
    ~CLogger()
    {
if ((m_plogstream) && (m_plogstream != &cout))
{      
delete m_plogstream;
        }
    }
   
    /**
     * @brief 打开/关闭输出
     * @param[in] bOutputFlag  缺省true, 输出标识
     */
    void OpenOutput(bool bOutputFlag = true)
    {
        m_bOutputFlag = bOutputFlag;
    }
   
    /**
     * @brief 输出格式标志
     * @param[in]  nFlags  输出格式标志(暂未用)
     */
    void SetOutputFlags(int nFlags)
    {
    m_nFlags = nFlags;
    }
private:
    bool    m_bOutputFlag;
    int     m_nFlags;            
    string  m_filename;
    basic_ostream<CharT_>* m_plogstream;       
};

#endif

 

/*
 * @file: testlog.cpp
 * @brief: 测试日志类
 */

#include "Logger.h"

template<>
bool CLogger<char>::bDebug = true;

int main(int argv, char** argc)
{
    CLogger<char> termLog;
    termLog << "hello world";
    termLog.OpenOutput(false);
    termLog << "This line won't show your term";
   
    CLogger<char> fileLog("test.txt");
    fileLog << "hello world";
    fileLog.OpenOutput(false);
    fileLog << "This line won't show your term";
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值