From owner-freebsd-questions@freebsd.org Mon Sep 21 22:33:45 2020 Return-Path: Delivered-To: freebsd-questions@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A852B3FF515 for ; Mon, 21 Sep 2020 22:33:45 +0000 (UTC) (envelope-from dpchrist@holgerdanske.com) Received: from holgerdanske.com (holgerdanske.com [184.105.128.27]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "www.holgerdanske.com", Issuer "www.holgerdanske.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4BwK3X49szz43Q3 for ; Mon, 21 Sep 2020 22:33:44 +0000 (UTC) (envelope-from dpchrist@holgerdanske.com) Received: from 99.100.19.101 (99-100-19-101.lightspeed.frokca.sbcglobal.net [99.100.19.101]) by holgerdanske.com with ESMTPSA (TLS_AES_128_GCM_SHA256:TLSv1.3:Kx=any:Au=any:Enc=AESGCM(128):Mac=AEAD) (SMTP-AUTH username dpchrist@holgerdanske.com, mechanism PLAIN) for ; Mon, 21 Sep 2020 15:33:41 -0700 Subject: Re: Error message output To: freebsd-questions@freebsd.org References: <20200920191108.22864e5c.freebsd@edvax.de> <528b2c90-18c4-9e95-a150-67344154c66c@holgerdanske.com> <20200921132139.286b5bda.freebsd@edvax.de> From: David Christensen Message-ID: <8b426d6f-6ebe-d1a7-13af-69cffbcb6222@holgerdanske.com> Date: Mon, 21 Sep 2020 15:33:40 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <20200921132139.286b5bda.freebsd@edvax.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4BwK3X49szz43Q3 X-Spamd-Bar: ++ Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=none (mx1.freebsd.org: domain of dpchrist@holgerdanske.com has no SPF policy when checking 184.105.128.27) smtp.mailfrom=dpchrist@holgerdanske.com X-Spamd-Result: default: False [2.69 / 15.00]; RCVD_TLS_ALL(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_SPAM_SHORT(0.74)[0.742]; MIME_GOOD(-0.10)[text/plain]; TO_DN_NONE(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[freebsd-questions@freebsd.org]; AUTH_NA(1.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_SPAM_MEDIUM(0.32)[0.318]; ARC_NA(0.00)[]; NEURAL_SPAM_LONG(0.73)[0.728]; DMARC_NA(0.00)[holgerdanske.com]; R_SPF_NA(0.00)[no SPF record]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:6939, ipnet:184.104.0.0/15, country:US]; RCVD_COUNT_TWO(0.00)[2]; MAILMAN_DEST(0.00)[freebsd-questions] X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Sep 2020 22:33:45 -0000 On 2020-09-21 04:21, Polytropon wrote: > On Sun, 20 Sep 2020 22:12:24 -0700, David Christensen wrote: >> On 2020-09-20 10:11, Polytropon wrote: >>> I have a general question. Is it still considered useful to >>> output error messages of a script to standard error? > What about form? > > echo "the error message" > /dev/stderr > > or > > echo "the error message" >&2 > > WHich one is considered better form, leaving aside the "amount of > symbols needed"? "It depends". The former is dependent upon the system having a /dev/stderr. The latter is dependent upon the shell having redirection (which all Bourne-compatible shells should?). Both seem to work on FreeBSD, Debian, macOS, and Cygwin (Windows 7). But, that is likely to be untrue on every system. And, is it possible to have a situation where you have already redirect stderr and yet the script needs to emit an error message? Without a compelling reason either way, I have tended to use the latter; but the former is starting to look more idiot-proof. > I'm primarily interested in what currently the consensus is > about good form and style, common approach and accepted ways > of doing things. I could keep spamming the system log with > progress messages, but that wouldn't be nice, would it? ;-) My ideal would be to put "less important" messages into a program-specific log(s) and to put "important" messages into both program-specific logs and the system log. Again, under configuration/ option control. Truly sophisticated programs use a logging management layer. For example, in Perl: https://metacpan.org/pod/Log::Log4perl David