#include "LogUtil.h"

LogUtil::LogUtil()
{

}

void LogUtil::PrintLog(const QString level, const QString & msg)
{
    QString folder = SettingConfig::getInstance().BASE_LOG_PATH;

    // 新建/使用 log 文件夹
    QString logStr = QString("%1").arg(folder);    // log 文件夹
    QDir logDir(SettingConfig::getInstance().BASE_LOG_PATH);

    if (!logDir.exists())
    {
        QDir workdir(folder);
        bool flag = workdir.mkdir(logStr);
        if (flag)
        {
            folder = logStr;
        }
    }

    // 每日生成一个文件
    QDateTime tmnow = QDateTime::currentDateTime();
    QString dtstr = tmnow.toString("yyyy-MM-dd");
    QString dtmstr = tmnow.toString("yyyy-MM-dd hh:mm:ss");
    QString fpath = QString("%1/%2.log").arg(logStr).arg(dtstr);
    QFile myfile(fpath);

    QString message = QString("%1 [%2] %3").arg(dtmstr).arg(level).arg(msg);
    qDebug() << message;

    // DEBUG 级别的不输出文件
    if (level.toUpper() == "DEBUG") {
        return ;
    }

    QFileInfo fi(fpath);
    bool flag = fi.exists() && fi.isFile();    // 文件存在
    if (flag)
    {
        // 追加写入文件
        if (!myfile.open(QIODevice::Append | QIODevice::Text))
        {
            return;
        }

        QTextStream ostream(&myfile);
        ostream.setCodec("UTF-8");

        // 写入内容
        ostream << message << endl;
        ostream.flush();
    }
    else
    {
        // 新建文件
        if (!myfile.open(QIODevice::WriteOnly | QIODevice::Text))
        {
            return;
        }

        QTextStream ostream(&myfile);
        ostream.setCodec("UTF-8");
        ostream.setGenerateByteOrderMark(true);    // UTF-8 带 BOM

        // 写入内容
        ostream << message << endl;
        ostream.flush();
    }

    myfile.close();    // 关闭文件
}

void LogUtil::PrintLog(const QString sub, const QString file, const QString level, const QString & msg)
{
    // 新建/使用 log 文件夹
    QString logStr = QString("%1%2\\").arg(SettingConfig::getInstance().BASE_LOG_PATH).arg(sub);    // log 文件夹
    QDir logDir(logStr);

    if (!logDir.exists())
    {
        // 递归创建目录
        QDir().mkpath(logStr);
    }

    // 每日生成一个文件
    QDateTime tmnow = QDateTime::currentDateTime();
    QString dtstr = tmnow.toString("yyyy-MM-dd");
    QString dtmstr = tmnow.toString("yyyy-MM-dd hh:mm:ss");
    QString fpath = QString("%1/%2-%3.log").arg(logStr).arg(dtstr).arg(file);
    QFile myfile(fpath);

    QString message = QString("%1 [%2] %3").arg(dtmstr).arg(level).arg(msg);
    qDebug() << message;

    QFileInfo fi(fpath);
    bool flag = fi.exists() && fi.isFile();    // 文件存在
    if (flag)
    {
        // 追加写入文件
        if (!myfile.open(QIODevice::Append | QIODevice::Text))
        {
            return;
        }

        QTextStream ostream(&myfile);
        ostream.setCodec("UTF-8");

        // 写入内容
        ostream << message << endl;
        ostream.flush();
    }
    else
    {
        // 新建文件
        if (!myfile.open(QIODevice::WriteOnly | QIODevice::Text))
        {
            return;
        }

        QTextStream ostream(&myfile);
        ostream.setCodec("UTF-8");
        ostream.setGenerateByteOrderMark(true);    // UTF-8 带 BOM

        // 写入内容
        ostream << message << endl;
        ostream.flush();
    }

    myfile.close();    // 关闭文件
}
