在线oj之日志模块

日志模块用于打印日志信息

#pragma once

#include <string.h>
#include <sys/time.h>
#include <iostream>
#include <cstdio>


//当前实现的log服务也是在控制台进行输出
//格式
//[时间 日志等级 文件:行号] 具体的日志信息

class LogTime
{
    public:
        static int64_t GetTimeStamp()
        {
            struct timeval tv;
            gettimeofday(&tv, NULL);
            return tv.tv_sec;
        }

        //返回 年-月-日-时:分:秒
        static void GetTimeStamp(std::string* timestamp)
        {
            time_t sys_time;
            time(&sys_time);
            struct tm* st = localtime(&sys_time);
            char buf[30] = {'\0'};
            snprintf(buf, sizeof(buf) - 1, "%04d-%02d-%02d %02d:%02d:%02d", st->tm_year+ 1900, st->tm_mon + 1, st->tm_mday, st->tm_hour, st->tm_min, st->tm_sec);
            timestamp->assign(buf, strlen(buf));
        }
};


//日志等级
//INFO WARNING ERROR FATAL DEBUG
const char* Level[] = {"INFO", "WARNING", "ERROR", "FATAL", "DEBUG"};

enum LogLevel
{
    INFO = 0,
    WARNING,
    ERROR,
    FATAL,
    DEBUG
};

inline std::ostream& Log(LogLevel lev, const char* file, int line, const std::string& logmsg)
{
    std::string level_info = Level[lev];
    std::string TimeStamp;
    LogTime::GetTimeStamp(&TimeStamp);
    std::cout << "[" << TimeStamp << " " << level_info << " " << file << ":" << line << "]" << logmsg;
    return std::cout;
}


#define LOG(lev, msg) Log(lev, __FILE__, __LINE__, msg)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值