Ducktape icon indicating copy to clipboard operation
Ducktape copied to clipboard

Redirect std::cout to both Debug and stdout

Open aryanbaburajan opened this issue 2 years ago • 3 comments

Is your feature request related to a problem? Please describe. As of now, once an instance of Engine has been created, all std::cout and std::cerr logs get forwarded into the Debug class, instead of the default stdout/stderr. Though it's useful, it removes the ability of users to debug log normally, especially in scenarios where the Editor isn't open, or the Debug panel is inaccessible, for example in a released game distribution.

Describe the solution you'd like Copy std::cout/std::cerr instead of simply forwarding, so that it is forwarded to both stdout/stderr (otherwise, the terminal window), while also being logged in the Debug class.

aryanbaburajan avatar Oct 25 '22 15:10 aryanbaburajan

Hey, could I be assigned to this?

Yeffian avatar Oct 29 '22 16:10 Yeffian

Due to the one std::streambuf limit per std::ostream, logging has been split into two. Printing to std::cout and std::cerr outputs to the default stdout (terminal), like normal. Printing to engine.debug outputs to the Editor's built in Console.

Example usage:

engine.debug.err << "This is an error\n";
engine.debug.log << "This is a log\n";

Styling based on log type yet to be implemented.

aryanbaburajan avatar Dec 26 '22 14:12 aryanbaburajan

On second thought this looks possible to me now. I'll give it a try soon.

aryanbaburajan avatar Sep 09 '23 04:09 aryanbaburajan