From e3d4d79300e203ab9bd3f6ee0d8f43f345e6166a Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 25 Oct 2019 10:45:07 +0200 Subject: [PATCH] ENH: add InfoErr stream. Same as Info, but with stderr instead of stdout --- src/OpenFOAM/db/error/messageStream.C | 65 +++++++++++++-------------- src/OpenFOAM/db/error/messageStream.H | 10 +++-- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/src/OpenFOAM/db/error/messageStream.C b/src/OpenFOAM/db/error/messageStream.C index ce225134c8..ef80a4aecb 100644 --- a/src/OpenFOAM/db/error/messageStream.C +++ b/src/OpenFOAM/db/error/messageStream.C @@ -200,48 +200,41 @@ Foam::messageStream::operator Foam::OSstream&() { if (level) { - const bool collect = (severity_ == INFO || severity_ == WARNING); + const bool collect = + ( + severity_ == INFO + || severity_ == INFO_STDERR + || severity_ == WARNING + ); - // Report the error + + // Could add guard with parRun if (collect && !Pstream::master()) { return Snull; } - else + + OSstream& os = + ( + (collect || !Pstream::parRun()) + ? ((severity_ == INFO_STDERR) ? Serr : Sout) + : Pout + ); + + + if (!title().empty()) { - if (!title().empty()) - { - if (collect || !Pstream::parRun()) - { - Sout<< title().c_str(); - } - else - { - Pout<< title().c_str(); - } - } - - if (maxErrors_) - { - ++errorCount_; - - if (errorCount_ >= maxErrors_) - { - FatalErrorInFunction - << "Too many errors" - << abort(FatalError); - } - } - - if (collect || !Pstream::parRun()) - { - return Sout; - } - else - { - return Pout; - } + os << title().c_str(); } + + if (maxErrors_ && (++errorCount_ >= maxErrors_)) + { + FatalErrorInFunction + << "Too many errors" + << abort(FatalError); + } + + return os; } return Snull; @@ -252,6 +245,8 @@ Foam::messageStream::operator Foam::OSstream&() Foam::messageStream Foam::Info("", messageStream::INFO); +Foam::messageStream Foam::InfoErr("", messageStream::INFO_STDERR); + Foam::messageStream Foam::Warning ( "--> FOAM Warning : ", diff --git a/src/OpenFOAM/db/error/messageStream.H b/src/OpenFOAM/db/error/messageStream.H index 99226b19be..429f3c44d4 100644 --- a/src/OpenFOAM/db/error/messageStream.H +++ b/src/OpenFOAM/db/error/messageStream.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -76,10 +76,11 @@ public: //- Message type, or error severity flags enum errorSeverity { - INFO, //!< General information output, not necessarily an error. + INFO = 1, //!< General information output WARNING, //!< Warning of possible problem. SERIOUS, //!< A serious problem - eg, data corruption. - FATAL //!< A fatal error. + FATAL, //!< A fatal error. + INFO_STDERR = INFO | 0x10, //!< Information, but on stderr }; @@ -228,6 +229,9 @@ extern int infoDetailLevel; //- Information stream (uses stdout - output is on the master only) extern messageStream Info; +//- Information stream (uses stderr - output is on the master only) +extern messageStream InfoErr; + //- Warning stream (uses stdout - output is on the master only), //- with additional 'FOAM Warning' header text. extern messageStream Warning;