Skip to content

Instantly share code, notes, and snippets.

@realinit
Created January 29, 2019 12:45

Revisions

  1. realinit created this gist Jan 29, 2019.
    82 changes: 82 additions & 0 deletions errorLog.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,82 @@
    const fs = require('fs');
    const path = require('path');
    const errorLogHandler = async (request, reply) => {
    await saveErrorLog(request.body);
    reply.send({ success: true });
    };

    const saveErrorLog = (ed) => {
    let fileName = getFileName();
    let today = getTodayDateFormat()
    let fileCount = getFileCount(today) == 0 ? 1 : getFileCount(today);
    let filePath = path.join(__dirname, `/../logging/${fileName}`);
    fs.exists(fileName, function (exists) {
    if (exists && getFilesizeInBytes(`${filePath}_${fileCount}.log`) < 0.500000) {
    fs.appendFile(`${filePath}_${fileCount}.log`, ed, function (err) {
    if (err) return false;
    return true;
    })
    } else if (getFilesizeInBytes(`${filePath}_${fileCount}.log`) > 0.500000) {
    fileCount = fileCount + 1;
    error_file = fs.createWriteStream(`${filePath}_${fileCount}.log`, { flags: 'a' });
    error_file.write('\n-----\n' + JSON.stringify(ed, null, 2) + '\n-----\n');
    return true;
    } else {

    error_file = fs.createWriteStream(`${filePath}_${fileCount}.log`, { flags: 'a' });
    error_file.write('\n-----\n' + JSON.stringify(ed, null, 2) + '\n-----\n');
    return true;
    }
    });
    }

    const getFilesizeInBytes = (filename) => {
    try {
    const stats = fs.statSync(filename)
    const fileSizeInBytes = stats.size
    const fileSizeInMegabytes = fileSizeInBytes / 1000000.0
    return fileSizeInMegabytes
    } catch (error) {
    return 0
    }
    }

    const getFileName = () => {
    try {
    let today = getTodayDateFormat()
    makeFolder(today);
    return `${today}/errorLog`;
    } catch (error) {
    }
    }

    const getTodayDateFormat = () => {
    try {
    let today = new Date();
    let dd = today.getDate();
    let mm = today.getMonth() + 1;
    let yyyy = today.getFullYear();
    if (dd < 10) dd = '0' + dd
    if (mm < 10) mm = '0' + mm
    today = mm + '_' + dd + '_' + yyyy;
    return today;
    } catch (error) {
    return "test_1234";
    }
    }



    const getFileCount = (name) => {
    let dir = path.join(__dirname, `/../logging/${name}`);
    files = fs.readdirSync(dir);
    return files.length;
    }

    const makeFolder = (t) => {
    let dir = path.join(__dirname, `/../logging/${t}`);
    if (!fs.existsSync(dir)) {
    fs.mkdirSync(dir);
    }
    }
    module.exports = errorLogHandler;