Advertisement
maprangsoft

1111

Apr 30th, 2020
465
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const helper = require("./helpers/helper");
  2.  
  3. //load module เข้ามาใช้
  4. const express = require("express"),
  5.   app = express(),
  6.   port = 4000 || process.env.SERVER_PORT;
  7.  
  8. //Hide server-side technology information from the browser
  9. app.disable("x-powered-by");
  10.  
  11. const bodyParser = require("body-parser");
  12. app.use(
  13.   bodyParser.urlencoded({
  14.     extended: true //true ทำให้ส่งค่าแบบนี้เข้ามาได้ a[name][] หรือ a[] (ส่งผ่าน application/x-www-form-urlencoded)
  15.   })
  16. );
  17. // parse application/json
  18. app.use(bodyParser.json()); //ทำให้รับ json จาก body ได้
  19.  
  20. const fileUpload = require("express-fileupload");
  21. app.use(
  22.   fileUpload({
  23.     //limits: { fileSize: 50 * 1024 * 1024 },
  24.   })
  25. );
  26.  
  27. const cookieParser = require("cookie-parser");
  28. app.use(cookieParser());
  29.  
  30. const requestIp = require("request-ip");
  31. app.use(requestIp.mw()); //รับ id จาก request
  32.  
  33. //กำหนดค่า
  34. const dotenv = require("dotenv");
  35. dotenv.config();
  36.  
  37. const session = require("express-session");
  38. app.use(
  39.   session({
  40.     //กำหนดค่า session
  41.     secret: process.env.SESSION_SECRET,
  42.     cookie: {
  43.       maxAge: 15 * 60 * 1000 //15 นาที
  44.     },
  45.     rolling: true,
  46.     resave: true,
  47.     saveUninitialized: true
  48.   })
  49. );
  50.  
  51. const fs = require("fs");
  52. const logPath = "./logs/nodejs-" + helper.dateNow() + ".log";
  53. try {
  54.   if (!fs.existsSync(logPath)) {
  55.     //ถ้าไม่พบไฟล์ log
  56.     var myLog = "nodejs-" + helper.dateNow() + ".log";
  57.   } else {
  58.     var myLog = "nodejs-" + helper.dateNow() + ".log";
  59.   }
  60. } catch (err) {
  61.   console.error(err);
  62. }
  63.  
  64. const log4js = require("log4js"); //กำหนด logging
  65. // log4js.configure({
  66. //   appenders: { medium: { type: 'file', filename: './logs/'+myLog } }, //สร้าง config ตัวอย่างจะสร้างเป็นประเภทไฟล์
  67. //   //categories สร้าง กลุ่ม log โดยกำหนด level ของ log ว่าจะให้ filter ในระดับไหน ( ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < MARK < OFF)
  68. //   categories: { default: { appenders: ['medium'], level: 'error' } }  //ถ้าใส่ 0 คือจะไม่มีการบันทึก log
  69. // });
  70.  
  71. // const logger = log4js.getLogger('medium'); //เรียกใช้งาน category “medium” และทำสอบ write log ตาม level
  72. // logger.trace('level trace : medium trace');
  73. // logger.debug('level debug : medium debug');
  74. // logger.info('level info : medium info');
  75. // logger.warn('level warn : medium warn');
  76. // logger.error('level error : medium error');
  77. // logger.fatal('level fatal : medium fatal');
  78. log4js.configure({
  79.   appenders: {
  80.     console: { type: "console" },
  81.     file: { type: "file", filename: "./logs/" + myLog }
  82.   },
  83.   categories: {
  84.     myLog: { appenders: ["file"], level: "error" },
  85.     default: { appenders: ["console"], level: "info" }
  86.   }
  87. });
  88.  
  89. const logger = log4js.getLogger("myLog");
  90. app.use(
  91.   log4js.connectLogger(logger, {
  92.     //level: 'info',
  93.     level: "auto",
  94.     statusRules: [
  95.       { from: 200, to: 299, level: "debug" },
  96.       { codes: [303, 304], level: "info" }
  97.     ],
  98.     format: (req, res, format) =>
  99.       format(`:remote-addr :method :url ${JSON.stringify(req.body)}`),
  100.     context: true
  101.   })
  102. );
  103.  
  104. //set route group
  105. express.application.prefix = express.Router.prefix = function(path, middleware = null, configure) {
  106.     const customRouter = express.Router();
  107.     this.use(path, middleware, customRouter);
  108.     configure(customRouter);
  109.     return customRouter;
  110. };
  111.  
  112. //Gobal Variables
  113. global.__basedir = __dirname; //root directory
  114. global.__publicdir = __dirname + "/public"; //public directory
  115.  
  116. //Load Connect MongoDB
  117. global.monmon = require("./config/mongodb");
  118.  
  119. app.use((req, res, next) => {
  120.   //ถ้ามี request เข้ามา ก็ให้เชื่อมต่อฐานข้อมูล
  121.   //Load Connect MySql
  122.   global.db = require("./config/mysql"); //ให้โหลด connection ทุกครั้ง สร้างตัวแปรชื่อ db('ชื่อตารางที่ต้องการ') เพื่อใช้ที่ไหนก็ได้
  123.   if (req.headers.authorization) global.$auth = helper.auth(req); //สร้าง auth เอาไว้ใช้ดึงค่าออกจาก jwt เช่น $auth.id หรือ $auth.name
  124.   next();
  125. });
  126.  
  127. app.use(express.static("public")); //ทำ public_path เอาไว้ใช้เวลาลิ้งหาไฟล์
  128.  
  129. //Middleware
  130.  
  131. //Register Route
  132. const indexRouter = require("./route/web");
  133. const apiRouter = require("./route/api");
  134.  
  135. app.use("/", indexRouter); //ลิ้งไม่ต้องผ่าน api
  136. app.use("/api", apiRouter); //ลิ้งสำหรับ api
  137.  
  138. //Run Port
  139. app.listen(port, () => console.log(`รันผ่าน http://localhost:${port}`));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement