{"id":85,"date":"2008-02-28T15:12:12","date_gmt":"2008-02-28T15:12:12","guid":{"rendered":"http:\/\/byteblog.internetallee.de\/?p=85"},"modified":"2008-02-28T15:12:12","modified_gmt":"2008-02-28T15:12:12","slug":"loggen-in-shell-programmen","status":"publish","type":"post","link":"https:\/\/blogs.internetallee.de\/byteblog\/2008\/02\/28\/loggen-in-shell-programmen\/","title":{"rendered":"Loggen in Shell Programmen"},"content":{"rendered":"<p>In Java wird log4j genutzt, in Perl gibt  es Log::Log4perl, in Python ist zwar keine 4 im Namen, aber logging tut  es ja auch. F\u00fcr JavaScript gibt es log4js und in Bash gibt es nat\u00fcrlich  log4sh.  Aber wie immer, kann man das auch einfach selber machen.<\/p>\n<p>Zum Beispiel mit einer einfachen log Funktion:<\/p>\n<pre class=\"brush: bash;\">#!\/usr\/bin\/bash\nLOG_DEBUG=0\nLOG_INFO=1\nLOG_WARN=2\nLOG_ERROR=3\nLOG_CRITICAL=4\nexport LOG_DEBUG LOG_INFO LOG_WARN LOG_ERROR LOG_CRITICAL\n\nexport LOG_LEVEL=$LOG_WARN\nexport LOG_FILE=\"$HOME\/simple_log\"\n\nfunction log() {\n    local level=shift\n    local message=$*\n\n    if [ \"$level\" -ge \"$LOG_LEVEL\" ]\n    then\n        echo \"$(date) $message\" &gt;&gt; \"$LOG_FILE\"\n    fi\n}\n<\/pre>\n<p>Ist dieses Shell Skript in einer Datei &#8211; sagen wir <em>simple_log.sh<\/em> &#8211; gespeichert, so kann es in einem anderen Shell-Skript wie folgt genutzt werden:<\/p>\n<pre class=\"brush: bash;\">#!\/usr\/bin\/bash\n. simple_log.sh\n\nlog $LOG_DEBUG \"Am Anfang des Skriptes\"\nlog $LOG_INFO \"Und ende.\"\n<\/pre>\n<p>Aber ehrlich: <a href=\"http:\/\/sourceforge.net\/projects\/log4sh\" target=\"_blank\">log4sh<\/a> ist genauso einfach zu benutzen und kann viel mehr.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Java wird log4j genutzt, in Perl gibt es Log::Log4perl, in Python ist zwar keine 4 im Namen, aber logging tut es ja auch. F\u00fcr JavaScript gibt es log4js und in Bash gibt es nat\u00fcrlich log4sh. Aber wie immer, kann man das auch einfach selber machen. Zum Beispiel mit einer einfachen log Funktion: #!\/usr\/bin\/bash LOG_DEBUG=0 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[33,25],"class_list":["post-85","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-logging","tag-shell"],"_links":{"self":[{"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/posts\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":0,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/posts\/85\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/media?parent=85"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/categories?post=85"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/tags?post=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}