log.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. const level_list = ["DEBUG", "INFO", "WARNING", "ERROR"];
  2. const file_path = "log"
  3. class JadeLogging {
  4. constructor(app_name, level = "DEBUG") {
  5. this.app_name = app_name
  6. this.level = level
  7. this.level_index = level_list.indexOf(level)
  8. }
  9. format(level, message) {
  10. let max_format = 80
  11. switch (level) {
  12. case "INFO":
  13. max_format = max_format + 1
  14. break
  15. case "WARNING":
  16. max_format = max_format - 2
  17. break
  18. default :
  19. break
  20. }
  21. if (message.length < max_format) {
  22. if ((max_format - message.length) % 2 === 0) {
  23. message = "#".repeat(Math.floor((max_format - message.length) / 2)) + message + "#".repeat(Math.floor((max_format - message.length) / 2))
  24. } else {
  25. message = "#".repeat(Math.floor((max_format - message.length) / 2)) + message + "#".repeat(Math.floor((max_format - message.length) / 2) + 1)
  26. }
  27. }
  28. return message
  29. }
  30. getTime() {
  31. const timestamp = new Date();
  32. // 获取当前时间戳
  33. return timestamp.toLocaleDateString().replace(/\//g, "-") + " " + timestamp.toTimeString().substr(0, 8) + "," + timestamp.getMilliseconds().toString()
  34. }
  35. formatMessage(log_level, message, is_format) {
  36. // 获取北京时间
  37. // 格式化消息
  38. //2023-12-13 15:15:21,409 - 阿里玩偶 -
  39. //2023-12-14T01:43:31.278Z
  40. //2023-12-13 15:15:21,409 - 阿里玩偶 - INFO:
  41. //2023-12-13 15:15:21,409 - 阿里玩偶 - ERROR:
  42. if (is_format) {
  43. message = this.format(log_level, message)
  44. }
  45. return `${this.getTime()} - ${this.app_name} - ${log_level}: ${message}`
  46. }
  47. async log(message) {
  48. console.debug(message)
  49. await local.set(file_path,this.getTime(), message);
  50. }
  51. async info(message, is_format=false) {
  52. if (this.level_index <= 1) {
  53. await this.log(this.formatMessage("INFO", message, is_format))
  54. }
  55. }
  56. async warning(message, is_format=false) {
  57. if (this.level_index <= 2) {
  58. await this.log(this.formatMessage("WARNING", message, is_format))
  59. }
  60. }
  61. async error(message, is_format=false) {
  62. if (this.level_index <= 3) {
  63. await this.log(this.formatMessage("ERROR", message, is_format))
  64. }
  65. }
  66. async debug(message, is_format=false) {
  67. if (this.level_index <= 0) {
  68. await this.log(this.formatMessage("DEBUG", message, is_format))
  69. }
  70. }
  71. }
  72. // 测试日志记录函数
  73. export {JadeLogging}