Bladeren bron

Elmah added, but commented.

Logger now logs whole object not only part of it.
pull/44/head
radivoje.milutinovic 3 jaren geleden
bovenliggende
commit
395cb56f8b

+ 11
- 0
package-lock.json Bestand weergeven

"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"config": "^3.3.7", "config": "^3.3.7",
"cors": "^2.8.5", "cors": "^2.8.5",
"elmah.io.javascript": "^3.7.0",
"express": "^4.18.1", "express": "^4.18.1",
"express-jwt": "^7.7.2", "express-jwt": "^7.7.2",
"helmet": "^5.1.0", "helmet": "^5.1.0",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
}, },
"node_modules/elmah.io.javascript": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/elmah.io.javascript/-/elmah.io.javascript-3.7.0.tgz",
"integrity": "sha512-s7yyLo8tlZPURYxsT4tS977FfEXXaMzkbxZNLVRc90v949NgdfeJYLYyYe6c5fhcQkiIPsy3TgOCErSpaJWGvw=="
},
"node_modules/emoji-regex": { "node_modules/emoji-regex": {
"version": "8.0.0", "version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
}, },
"elmah.io.javascript": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/elmah.io.javascript/-/elmah.io.javascript-3.7.0.tgz",
"integrity": "sha512-s7yyLo8tlZPURYxsT4tS977FfEXXaMzkbxZNLVRc90v949NgdfeJYLYyYe6c5fhcQkiIPsy3TgOCErSpaJWGvw=="
},
"emoji-regex": { "emoji-regex": {
"version": "8.0.0", "version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",

+ 1
- 0
package.json Bestand weergeven

"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"config": "^3.3.7", "config": "^3.3.7",
"cors": "^2.8.5", "cors": "^2.8.5",
"elmah.io.javascript": "^3.7.0",
"express": "^4.18.1", "express": "^4.18.1",
"express-jwt": "^7.7.2", "express-jwt": "^7.7.2",
"helmet": "^5.1.0", "helmet": "^5.1.0",

+ 1
- 0
src/endpoints/user.js Bestand weergeven

const allUsers = await User.find({}) const allUsers = await User.find({})
return res.status(200).send(allUsers) return res.status(200).send(allUsers)
} catch (e) { } catch (e) {
// TODO: Jel i ovde treba next(e)?
return res.status(500).send('Internal server error!') return res.status(500).send('Internal server error!')
} }
} }

+ 0
- 27
src/logging/logger.js Bestand weergeven

const winston = require('winston');

const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
defaultMeta: { service: 'user-service' },
transports: [
//
// - Write all logs with importance level of `error` or less to `error.log`
// - Write all logs with importance level of `silly` or less to `all.log`
//
new winston.transports.File({ filename: 'loggerFiles/error.log', level: 'error' }),
new winston.transports.File({ filename: 'loggerFiles/all.log', level: 'silly' }),
],
});

//
// If we're not in production then log to the `console` with the format:
// `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
//
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple(),
}));
}

module.exports = logger

+ 10
- 0
src/logging/loggerElmah.js Bestand weergeven

// const Elmahio = require("elmah.io.javascript")
//
// // TODO: da li ovo treba u configu (appsettings.json) da bude ili moze ovde hardkodirano
// const loggerElmah = new Elmahio({
// apiKey: 'API_KEY',
// logId: 'LOG_ID',
// application: 'diligent-node-api'
// })
//
// module.exports = loggerElmah

+ 20
- 0
src/logging/loggerWinston.js Bestand weergeven

const winston = require('winston')
const config = require('config')

const loggerWinston = winston.createLogger({
level: 'info',
format: winston.format.json(),
defaultMeta: { service: 'user-service' },
transports: [
new winston.transports.File({ filename: 'loggerFiles/error.log', level: 'error' }),
new winston.transports.File({ filename: 'loggerFiles/all.log', level: 'silly' }),
],
});

if (config.util.getEnv('NODE_ENV') !== 'production') {
loggerWinston.add(new winston.transports.Console({
format: winston.format.simple(),
}));
}

module.exports = loggerWinston

+ 10
- 0
src/middleware/errorHandling.js Bestand weergeven

//const loggerElmah = require('../logging/loggerElmah')
const loggerWinston = require('../logging/loggerWinston')
const config = require('config')
const errorLogger = (err, req, res, next) => { const errorLogger = (err, req, res, next) => {
console.error(err) console.error(err)
if (config.util.getEnv('NODE_ENV') === 'development')
loggerWinston.error(err)
// else
// loggerElmah.error('There has been an error', err)
next(err) next(err)
} }

+ 21
- 17
src/middleware/requestLogging.js Bestand weergeven

const logger = require("../logging/logger")
const logger = require("../logging/loggerWinston")
const requestLogging = async (req, res, next) => { const requestLogging = async (req, res, next) => {
res.header("Content-Type", 'application/json'); res.header("Content-Type", 'application/json');
const reqData = JSON.stringify({
headers: req.headers,
method: req.method,
url: req.url,
httpVersion: req.httpVersion,
body: req.body,
cookies: req.cookies,
path: req.path,
protocol: req.protocol,
query: req.query,
hostname: req.hostname,
ip: req.ip,
originalUrl: req.originalUrl,
params: req.params,
})
logger.silly((JSON.stringify(reqData)))
// TODO: Da se vidi da li treba ceo objekat ili moze da se prebaci u string
// const reqData = JSON.stringify({
// headers: req.headers,
// method: req.method,
// url: req.url,
// httpVersion: req.httpVersion,
// body: req.body,
// cookies: req.cookies,
// path: req.path,
// protocol: req.protocol,
// query: req.query,
// hostname: req.hostname,
// ip: req.ip,
// originalUrl: req.originalUrl,
// params: req.params,
// })
// logger.silly((JSON.stringify(reqData)))
logger.silly(req)
next() next()
} }

+ 1
- 1
src/server.js Bestand weergeven

const helmet = require('helmet') //Basic protection against attacks like XSS const helmet = require('helmet') //Basic protection against attacks like XSS
const config = require('config') //Default configuration file const config = require('config') //Default configuration file


//console.log(config.util.getEnv('NODE_ENV'))
// console.log(config.util.getEnv('NODE_ENV'))


const swaggerOptions = { const swaggerOptions = {
swaggerDefinition: { swaggerDefinition: {

Laden…
Annuleren
Opslaan