Duplicate removed
This commit is contained in:
parent
b862d5b34a
commit
a8da1928a9
@ -1,100 +0,0 @@
|
|||||||
/* @flow */
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const express = require("express");
|
|
||||||
const winston = require("winston");
|
|
||||||
const morgan = require("morgan");
|
|
||||||
const fs = require("fs");
|
|
||||||
|
|
||||||
const app = express();
|
|
||||||
|
|
||||||
const logger = winston.createLogger({
|
|
||||||
transports: [
|
|
||||||
new winston.transports.Console({
|
|
||||||
level: "info",
|
|
||||||
format: winston.format.combine(
|
|
||||||
winston.format.colorize({ all: true }),
|
|
||||||
winston.format.label({ label: "serv" }),
|
|
||||||
winston.format.timestamp(),
|
|
||||||
winston.format.printf(
|
|
||||||
msg =>
|
|
||||||
`${msg.timestamp} [${msg.label}] ${msg.level} ${
|
|
||||||
msg.message
|
|
||||||
}`
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}),
|
|
||||||
new winston.transports.File({
|
|
||||||
filename: "serv_error.txt.log",
|
|
||||||
level: "warn",
|
|
||||||
format: winston.format.combine(
|
|
||||||
winston.format.timestamp(),
|
|
||||||
winston.format.printf(
|
|
||||||
msg =>
|
|
||||||
`${msg.timestamp} [serv] ${msg.level} ${
|
|
||||||
msg.message
|
|
||||||
}`
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}),
|
|
||||||
new winston.transports.File({
|
|
||||||
filename: "serv_error.json.log",
|
|
||||||
level: "warn"
|
|
||||||
})
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
const morganStream = fs.createWriteStream("serv_http_errors.log", {
|
|
||||||
flags: "a"
|
|
||||||
});
|
|
||||||
|
|
||||||
app.use(
|
|
||||||
morgan(
|
|
||||||
(tokens, req, res) =>
|
|
||||||
`${new Date().toISOString()} [http] ` +
|
|
||||||
`${tokens.method(req, res)} ${tokens.url(req, res)}`,
|
|
||||||
{
|
|
||||||
immediate: true,
|
|
||||||
stream: morganStream
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
app.use(
|
|
||||||
morgan(
|
|
||||||
`:date[iso] [http] ` +
|
|
||||||
`:method :url (:status) :res[content-length] - :response-time ms`,
|
|
||||||
{
|
|
||||||
skip: (req, res) => res.statusCode < 400
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
app.get("/", (req, res) => {
|
|
||||||
logger.info("Doing some processing...");
|
|
||||||
logger.debug("Some fake step 1; starting");
|
|
||||||
logger.debug("Some fake step 2; working");
|
|
||||||
logger.debug("Some fake step 3; finished!");
|
|
||||||
res.send("Winston server!");
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get("/xyzzy", (req, res) => {
|
|
||||||
logger.info("Adventurer says 'XYZZY'");
|
|
||||||
res.say_xyzzy(); // this will fail
|
|
||||||
res.send("Nothing happens.");
|
|
||||||
});
|
|
||||||
|
|
||||||
app.use((req, res) => {
|
|
||||||
logger.warn(`UNKNOWN ROUTE ${req.originalUrl}`);
|
|
||||||
res.status(404).send("NOT FOUND");
|
|
||||||
});
|
|
||||||
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
|
||||||
app.use((err, req, res, next) => {
|
|
||||||
logger.error(`GENERAL ERROR ${err.message}\n${err.stack}`);
|
|
||||||
res.status(500).send("INTERNAL SERVER ERROR");
|
|
||||||
});
|
|
||||||
|
|
||||||
app.listen(8080, () => {
|
|
||||||
logger.info("Ready at http://localhost:8080");
|
|
||||||
});
|
|
||||||
Loading…
x
Reference in New Issue
Block a user