Comments (10)
Hi, what do you mean "Use this inside a filter"?
from nest-winston.
i want to use the logger as to log response inside a filter
from nest-winston.
There is no built-in method to log request and response, it's up to the developer. However, you can use any third party library like @algoan/nestjs-logging-interceptor
(or try to just google for a more popular one).
Also take a look at #268 where I provide an example to log request and response using that libray.
EDIT: if you are talking about generic Nest filters, here is the way (copy/paste from Nest documentation, adding the logger with the dependency injection):
src/HttpExceptionFilter.ts
import {
ExceptionFilter,
Catch,
ArgumentsHost,
HttpException,
Inject,
LoggerService
} from '@nestjs/common';
import { Request, Response } from 'express';
import { WINSTON_MODULE_NEST_PROVIDER } from 'nest-winston';
@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {
constructor(@Inject(WINSTON_MODULE_NEST_PROVIDER) private readonly logger: LoggerService) { }
catch(exception: HttpException, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const response = ctx.getResponse<Response>();
const request = ctx.getRequest<Request>();
const status = exception.getStatus();
response
.status(status)
.json({
statusCode: status,
timestamp: new Date().toISOString(),
path: request.url,
});
}
}
Use this way (src/app.controller.ts
):
import { Controller, Get, UseFilters } from '@nestjs/common';
import { AppService } from './app.service';
import { HttpExceptionFilter } from './HttpExceptionFilter';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
@UseFilters(HttpExceptionFilter)
getHello(): string {
return this.appService.getHello();
}
}
from nest-winston.
@gremo can we make file transports optional. I only want them when NODE_ENV = production . for other environments, I only want console transaport
from nest-winston.
@rubiin have you see my example? Is this what you want? For making transport optional it fairly easy with a conditional.
from nest-winston.
@rubiin have you see my example? Is this what you want? For making transport optional it fairly easy with a conditional.
yeah , I used the other i@algoan/nestjs-logging-interceptor works out of the box for my need
from nest-winston.
Good to know!
from nest-winston.
can you provide me a snippet for making transport optional, i cannot seem to get it up
from nest-winston.
It could work this way (not tested) assuming app.modules.ts
:
// Common Winston transports
let transports: winston.transport[] = [
new winston.transports.Console({
format: winston.format.combine(
winston.format.timestamp(),
nestWinstonModuleUtilities.format.nestLike(),
),
}),
];
// Production Winston transports (common + custom)
if ('production' === process.env.NODE_ENV) {
transports = [
...transports, new winston.transports.File({
filename: 'logs/error.log',
level: 'error',
}),
]
}
@Module({
imports: [
WinstonModule.forRoot({
transports: transports
}),
],
})
export class AppModule {}
from nest-winston.
cool
from nest-winston.
Related Issues (20)
- nest-winston v1.6.3 has runtime error ERR_REQUIRE_ESM HOT 11
- Extend the log methods HOT 4
- Log unhandled exceptions in readable form HOT 3
- WinstonLogger suggestions HOT 2
- Write after end node error with winston and nest-winston logger HOT 4
- TypeError: Cannot destructure property 'message' of 'message' as it is null
- Logging NestJS request details with every log? HOT 4
- "Unknown logger level" error when used for bootstraping HOT 3
- Nest can't resolve dependencies HOT 8
- Default context per service (configurable injection scope) HOT 3
- Passing winston logger instance to forRoot doesn't work HOT 2
- [Bug]: Creating multiple winston modules using child winston loggers use the last created winston module when using the nestjs Logger constructor HOT 2
- Adding "level" argument to log method HOT 2
- NestLike ConsoleFormat always contains stringifiedMeta and essentially logs message twice HOT 7
- LoggerService interface changed with Nest v8 HOT 2
- Is there a way to create a child logger? HOT 2
- How can I pass json attributes into the logger? HOT 3
- Support for @nestjs/common 10.0.0 in Peer Dependencies HOT 2
- [Question]: Should documentation be updated? HOT 8
- [Feature]: Support string-interpolation HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nest-winston.