Advertisement
based_3d

Untitled

Jun 30th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. const LOGS_PATH = './logs/';
  2.  
  3. function dateDifference (date1, date2) {
  4. if (!date1 || !date1.day || !date1.month || !date1.year) return 0;
  5. if (!date2 || !date2.day || !date2.month || !date2.year) return 0;
  6. var dif = 0;
  7. dif += 365 * (date1.year - date2.year);
  8. var days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  9. var daysA = 0, daysB = 0;
  10. for (var i = 1; i < date1.month; i++)
  11. daysA += days[i];
  12. daysA += date1.day;
  13. for (var i = 1; i < date2.month; i++)
  14. daysB += days[i];
  15. daysB += date2.day;
  16. dif += (daysA - daysB);
  17. dif = Math.abs(dif);
  18. return dif;
  19. }
  20.  
  21. function checkDir (dir) {
  22. try {
  23. if (!fs.existsSync(dir))
  24. fs.mkdirSync(dir);
  25. } catch (e) {}
  26. }
  27.  
  28. checkDir(LOGS_PATH);
  29.  
  30. module.exports = {
  31. logStreams: {},
  32. logDates: {},
  33.  
  34. "log": function (room, message, intro) {
  35. var f = new Date();
  36. var fstr = Tools.addLeftZero(f.getFullYear(), 4) + '_' + Tools.addLeftZero(f.getMonth() + 1, 2) + '_' + Tools.addLeftZero(f.getDate(), 2);
  37. if (!this.logStreams[room] || this.logDates[room] !== fstr) {
  38. if (this.logStreams[room]) {
  39. try {
  40. this.logStreams[room].close();
  41. } catch (e) {}
  42. }
  43. this.logDates[room] = fstr;
  44. checkDir(LOGS_PATH + room + '/');
  45. this.logStreams[room] = fs.createWriteStream(LOGS_PATH + room + '/' + room + '_' + fstr + '.log', {flags:'a+'});
  46. this.sweep(LOGS_PATH + room + '/');
  47. }
  48. this.logStreams[room].write((intro ? '[INTRO] ' : '') + '[' + Tools.addLeftZero(f.getHours(), 2) + ':' + Tools.addLeftZero(f.getMinutes(), 2) + ':' + Tools.addLeftZero(f.getSeconds(), 2) + '] ' + message + '\n');
  49. },
  50.  
  51. sweep: function (dir) {
  52. //delete previous logs
  53. var ageOfLogs = 15;
  54. if (Config.chatLogger && typeof Config.chatLogger.ageOfLogs === "number") {
  55. if (Config.chatLogger.ageOfLogs <= 0) return;
  56. ageOfLogs = Config.chatLogger.ageOfLogs;
  57. }
  58. var f = new Date();
  59. try {
  60. var logs = fs.readdirSync(dir);
  61. var aux;
  62. var maxDaysOld = ageOfLogs;
  63. for (var i = 0; i < logs.length; i++) {
  64. if (logs[i].substr(-4) !== ".log") continue;
  65. aux = logs[i].substr(0, logs[i].indexOf("."));
  66. aux = aux.split('_');
  67. if (aux.length < 4) continue;
  68. if (dateDifference({"day": parseInt(aux[3]), "month": parseInt(aux[2]), "year": parseInt(aux[1])}, {"day": f.getDate(), "month": f.getMonth() + 1, "year": f.getFullYear()}) > maxDaysOld) {
  69. try {fs.unlinkSync(dir + logs[i]);} catch (e) {error('failed to delete old logs\n' + e.stack);}
  70. }
  71. }
  72. } catch (e) {
  73. errlog(e.stack);
  74. }
  75. },
  76.  
  77. destroy: function () {
  78. for (var room in this.logStreams) {
  79. try {
  80. this.logStreams[room].close();
  81. } catch (e) {}
  82. delete this.logStreams[room];
  83. }
  84. }
  85. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement