Примечание: результат содержит тестовые данные но я явно хотел записать журналы консоли.
Код: Выделить всё
consoleLogger.bind({ 'xyz': 'abc' })
const result = await cypress.run({
spec: '/../test.cy.js',
project: ProjectConfiguration.projectDir,
})
consoleLogger.unbind()
Примечание. Этот код отлично работает на компьютере с Windows.< /p>
Код: Выделить всё
class ConsoleLogger {
private originalStdoutWrite: any
private originalStderrWrite: any
private logger: any
constructor(testLogger: any) {
this.logger = testLogger
this.originalStdoutWrite = process.stdout.write.bind(process.stdout)
this.originalStderrWrite = process.stderr.write.bind(process.stderr)
}
public bind(extra: {}) {
// Override stdout to capture Cypress console logs
process.stdout.write = (
chunk: string | Uint8Array,
...args: any[]
): boolean => {
executionLogger.info('start: stdout')
const output = chunk.toString().trim()
if (output) {
try {
this.logger.info(output, {
...extra,
source: 'stdout',
})
} catch (err) {
this.logger.error(err)
}
}
return true
}
process.stderr.write = (
chunk: string | Uint8Array,
...args: any[]
): boolean => {
const output = chunk.toString().trim()
if (output) {
try {
this.logger.error(output, {
...extra,
source: 'stderr',
})
} catch (err) {
this.logger.error(err)
}
}
return true
}
}
public unbind() {
process.stdout.write = this.originalStdoutWrite
process.stderr.write = this.originalStderrWrite
}
}
export default ConsoleLogger
Код: Выделить всё
import { createLogger, format, transports } from 'winston'
import ProjectConfiguration from '../projectConfiguration'
const { combine, timestamp } = format
const TestLoggerFactory = () => {
const logger = createLogger({
format: combine(timestamp(), format.json()),
transports: [
new transports.File({
filename: ProjectConfiguration.getLogFilePath(), // Specify log file location
options: { flags: 'w' },
}),
],
})
return logger
}
export default TestLoggerFactory
- Код регистратора отлично работает в системе Windows, но не в Linux и MacO.
- В Linux и MacOS журналы печатается на консоли, а не в файле.
- В Linux и MacOS журналы ошибок сохраняются в файле. Проблема касается стандартных исходящих журналов.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -and-macos
Мобильная версия