Logger.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const fs = require('fs');
  2. const path = require('path');
  3. class Logger {
  4. constructor(logFilePath = null, level = 'INFO') {
  5. this.logLevels = ['INFO', 'WARN', 'ERROR'];
  6. this.level = level.toUpperCase(); //不区分大小写 可以偷懒
  7. this.logFilePath = logFilePath ? path.resolve(logFilePath) : null;
  8. if (this.logFilePath) {
  9. // 确保日志目录存在
  10. const dir = path.dirname(this.logFilePath);
  11. if (!fs.existsSync(dir)) {
  12. fs.mkdirSync(dir, { recursive: true });
  13. }
  14. }
  15. }
  16. log(level, message) {
  17. level = level.toUpperCase();
  18. if (this.logLevels.indexOf(level) >= this.logLevels.indexOf(this.level)) {
  19. const timestamp = new Date().toISOString();
  20. const logMessage = `${timestamp} [${level}] ${message}\n`;
  21. console.log(logMessage.trim());
  22. if (this.logFilePath) {
  23. fs.appendFile(this.logFilePath, logMessage, (err) => {
  24. if (err) throw err;
  25. });
  26. }
  27. }
  28. }
  29. info(message) {
  30. this.log('INFO', message);
  31. }
  32. warn(message) {
  33. this.log('WARN', message);
  34. }
  35. error(message) {
  36. this.log('ERROR', message);
  37. }
  38. }
  39. module.exports = Logger;