playwright-java icon indicating copy to clipboard operation
playwright-java copied to clipboard

[Feature] Replace `System.out`/`System.err` with logging framework or logging facade

Open valfirst opened this issue 1 year ago • 8 comments

Why is System.out/System.err poor? Here is just one example of multiple explanations: https://owasp.org/www-community/vulnerabilities/Poor_Logging_Practice

Proposal: Replace System.out/System.err with logging facade SLF4J: https://www.slf4j.org/. Having this approach users will have freedom in choosing actual logging framework and will be able to configure log levels and log outputs (console, file, etc.)

valfirst avatar Nov 09 '23 16:11 valfirst

Do you have a particular use case where current logging approach causes problems?

yury-s avatar Nov 10 '23 00:11 yury-s

I'm working on implementation of PW plugin for test automation solution. We redirect logs to files and our reporting system (technically endpoint is REST API). If there are solutions to redirect System.out/System.err streams, please share.

valfirst avatar Nov 10 '23 10:11 valfirst

Without knowing much about the plugin and how it runs playwright it's hard to provide a solution. You can use System.setOut/setErr to capture standard output in-process. If it runs in a separate process, just redirect the output to a file with > bash operator or pipe it (|) to you log processor.

yury-s avatar Nov 10 '23 18:11 yury-s

here is an example of repo with implementation of Log4J2 Appender: https://github.com/reportportal/logger-java-log4j.

but it seems my original idea behind this request was lost, let me put the quote:

The problem is that writing directly to standard output or standard error is often used as an unstructured form of logging. Structured logging facilities provide features like: Logging levels, uniform formatting, a logger identifier, timestamps, and perhaps most critically; the ability to direct the log messages to the right place.

valfirst avatar Nov 10 '23 19:11 valfirst

Ok, let's collect more feedback. So far I'm not convinced that there is a good justification for adding complexity of such logging frameworks to the project. One of the main reasons is that for debugging tests we recommend recording Playwright traces, they contain way more details than printed to stdout/err and in a better structured form. Such trace files would have to be uploaded to the report separately anyway.

yury-s avatar Nov 10 '23 20:11 yury-s

allure framework is a great logging solution

nirtal85 avatar Dec 23 '23 06:12 nirtal85

Allure is a reporting framework, but not logging. Logging frameworks are Log4J, Logback, JUL. SLF4J is a logging facade.

valfirst avatar Jan 18 '24 15:01 valfirst

Using println is not a logging solution at all. Or at least not a recommended one in Java world

rtretyak avatar May 24 '24 07:05 rtretyak