タグ

Logに関するlax34のブックマーク (28)

  • 🪵 Go1.21 log/slogパッケージ超入門

    はじめに 2023年8月9日(日の場合)Go1.21がリリースされました🎉。Go1.21ではさまざまな変更点や追加機能が加わります。その中でもGo標準ライブラリに導入される構造化ロギングパッケージlog/slog(以下、slog)を楽しみにしている方は多いのではないでしょうか? 稿では、slogを実際に触りつつ、機能の解説をしていきます。 TL;DR 稿の概要をスライドにもまとめているので、ご参考にして下さい。 従来のlogパッケージについて slogの説明に入る前に、Go標準のlogパッケージについて簡単に紹介する。logパッケージを用いると、 io.Writer インターフェースを実装する任意の型にログメッセージを書き込むことができる。しかし以下のような制限があった。 ログレベルをサポートしていない ログレベルはほとんどのログパッケージの定番機能の一つだが、logパッケージには

    🪵 Go1.21 log/slogパッケージ超入門
  • Goの新しい構造化ロガーを体験しよう | gihyo.jp

    logパッケージ Goには標準ライブラリとしてlogパッケージが提供されています。logパッケージで行えることはそう多くはありません。たとえば、デフォルトではログは標準エラー出力に出力されますが、log.SetOutput関数で出力先を変更できます。また、利用する関数によってログを出力した後の挙動をコントロールできます。たとえば、log.Print関数はログを出力するだけですが、log.Fatal関数はログ出力後にos.Exit(1)を呼び出します。log.Panicはログ出力後に出力したログと同じ文言を引数としてパニックを発生させます。 logパッケージでは、ログとともに関連するデータを出力したい場合は、log.Printf関数を用います。次のように、書式を指定して出力します。 log.Printf("request_url=%s request_method=%s", r.URL, r

    Goの新しい構造化ロガーを体験しよう | gihyo.jp
  • console.log(); しか使えなかった自分へ。。。 - Qiita

    この記事について Webエンジニアになって早1年半。railsのデバッグをする時にはエディターのデバッガーでスマートにできていたが、javascriptになるといつもconsole.log();ばかりを使って原始的なデバッグをしていた。。。 そんな脳筋な過去の自分に教えてやるための記事です。 console.log({変数名}); 「いきなりconsole.log();の紹介かい!!!」って思われるかもしれませんが、この技を知ったときは「なんで知らんかったんや。。。」って思うくらい便利だったので最初に紹介します。 以下のようなHTMLがある場合 <form> <input type="text" value="名無しの権兵衛" id="name"> <input type="text" value="80歳" id="age"> <input type="text" value="バスケ"

    console.log(); しか使えなかった自分へ。。。 - Qiita
  • 今goのエラーハンドリングを無難にしておく方法(2021.09現在)

    2021年7月現在、goでエラーハンドリングってどうやって扱うのが無難なのかについて、いろいろと調べました。 昔から人気な pkg/errors、Go公式がメンテナンスしていたxerrors、 go v1.13から追加されたfmt.Errorfなどエラーハンドリングの選択肢がいろいろとあるので、stacktrace欲しい場合とそうでない場合で個人的にベストだと思った方法をまとめました。 エラーハンドリングに求める要件 エラーが発生した箇所を追える エラーの原因によって処理を分岐する (場合による)stacktraceがみれる 結論 stacktraceが不要な場合 fmt.Errorfでラップし、errors.Isで判定する stacktraceが必要な場合 pkg/errors.Wrapでラップし、pkg/errors.Causeで判定する log.Printf("%+v", err)で

    今goのエラーハンドリングを無難にしておく方法(2021.09現在)
  • コマンド一発でウェブサイトのアクセスログをターミナルやウェブブラウザで可視化できる「GoAccess」レビュー

    ウェブサイトのアクセス数や訪問者の属性を分析するために「Google Analytics」を使っている人は多いはず。無料のオープンソースソフトウェア「GoAccess」を使うと、トラッキングコードをウェブサイトに埋め込むことなく、リアルタイムにアクセス状況をターミナルやブラウザ上で可視化することができます。 GoAccess - Visual Web Log Analyzer https://goaccess.io/ 今回はUbuntu 18.04上にGoAccessをインストールしてみます。最新版をインストールするには下記コマンドを実行すればOK。 echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list wget -O -

    コマンド一発でウェブサイトのアクセスログをターミナルやウェブブラウザで可視化できる「GoAccess」レビュー
  • Monologのfingers_crossedがようやくわかった - ゆっくり*ゆっくり

    MonologはSymfony2でも利用されている高機能なロガーライブラリです。PythonLogbookというライブラリをPHPに移植したものだと記憶しています。 Symfony2の app/config/config_dev.yml では、Monologは次のように設定されています。 monolog: handlers: main: type: stream path: %kernel.logs_dir%/%kernel.environment%.log level: debug これはそのまま、debug以上のレベルのログをpathに指定したログファイルに書き出すという指定です。config_dev.phpなので開発環境用の設定ファイルですが、ログはすべて書き出すという設定です。 これとは別に、運用環境用の config_prod.yml では次のように設定されています。 mono

    Monologのfingers_crossedがようやくわかった - ゆっくり*ゆっくり
  • ターミナルの操作ログを自動で残したい

    プロセスアカウンティング用に広く利用できる物として "Process Accounting Utility" があります。環境によって、パッケージの名前が、 psacct もしくは acct になっているものです。 $ # インストール (ubuntu) $ apt-get install acct 用意されているコマンド lastcomm: 実行されたコマンドの表示 ac : ユーザの接続時間の表示 sa: 過去に実行されたコマンドの集計/フィルタ ※ 質問の要件を満たすために、一般ユーザーからはこれらのコマンドが実行できないようにしてください。 アカウンティングサービスの実行 $ # サービスの開始 $ /etc/init.d/acct start $ # サービスの停止 $ /etc/init.d/acct stop 実際は、accton コマンドによってプロセス監視が始められます。

    ターミナルの操作ログを自動で残したい
  • PSR-3 Logger Interfaceの話

    PSR-3自体の内容と言うよりは、ロガーは重要だとかロガーのインターフェースが標準化されることによってどんなうれしいことがあるかとか、主にその辺をまとめています。 今のところPSR-3対応のライブラリは数えるほどしかなく、PHP-FIGの理想は達成できるのかどうか、、というところですが、日語圏で紹介している人が皆無という印象だったのであえて題材に選びました。 会場提供をしてくださったEngine Yardさんありがとうございます。

    PSR-3 Logger Interfaceの話
    lax34
    lax34 2013/04/24
  • log4jのphp版、log4phpをつかってみた : php | メモリークラフト

    Apache の Loggingプロジェクトlog4phpというのがあるので使ってみました。 ディレクトリ構成は以下のとおり htdocs │ log4php │ ├ log4phpのファイル群 │ └ log4php.properties └ index.php log4php.propertiesをこのように定義 log4php.rootLogger=DEBUG log4php.logger.my_logger=DEBUG,my_file log4php.appender.my_file = LoggerAppenderDailyFile log4php.appender.my_file.layout = LoggerLayoutPattern log4php.appender.my_file.layout.ConversionPattern="%d [%p] %c: %m (at

  • MySQL5.0/5.1でスロークエリログを記録 - よんちゅBlog

    MySQLでスロークエリログを記録する方法は、バージョンによって設定方法が異なったり、オプション名が変更されていたりと、意外と分かりづらいことが多いのでここでまとめておこうと思います。 いずれのバージョンでも、コンフィグファイル(Linuxでは my.cnf、Windowsでは my.ini)の mysqld セクションに設定を記述することになります。 MySQL5.0の場合 MySQL5.0の設定方法は簡単で、「log-slow-queries」にログを出力するファイル名を設定するだけです。 絶対パスによる指定も可能ですが、相対パスで指定した場合はデータディレクトリからの相対パスになります。 また、スロークエリとして記録されるクエリのしきい値、つまり何秒以上のクエリをスロークエリとしてログに記録するかはデフォルトで10秒以上となっています。 この値は「long_query_time」によ

    MySQL5.0/5.1でスロークエリログを記録 - よんちゅBlog
  • cron で > /dev/null して椅子を投げられないための3つの方法 - 酒日記 はてな支店

    (タイトルは釣りです) いい加減、>/dev/null 2>&1と書くのをやめたらどうか - DQNEO起業日記 この記事のタイトルが twitter で流れてきたのを見て、「そうだ!出力を /dev/null に捨てるなんてとんでもないよね!」と思ってよく読んだら /dev/null に間違いなく捨てる方法だったのでつい crontabに > /dev/null 書いたら椅子投げる 2012-06-13 00:01:17 via YoruFukurou とつぶやいてしまったのですが、では出力を捨てないためにはどうすればいいのか。現時点での個人的ベストプラクティスを書き留めておきます。 デフォルト : メールで送る (MAILTO) せっかく cron daemon がログを捨てないためにわざわざメールで送ってくれるのに、それを > /dev/null で踏みにじるとはひどい。 とはいえ、

  • ウノウラボ Unoh Labs: MySQL オペミスでデータが破損してしまった場合の復旧方法

    こんにちは satoです。 オペミスで update に where句を付け忘れたり、プログラムのバグでデータが破損してしまったりした場合でも、バイナリログには更新SQLがすべて書き込まれるので、バックアップデータからオペミスが起こるまでの全てのSQLを流し込めれば、元の状態に戻すことは可能です。 •バイナリログを取っている •オンラインバックアップをとっている(mysqldumpMySQLを止めた状態でのcpによるバックアップとバイナリログ) •バックアップ時点でのバイナリログの書き込み位置を保存している 以上のような状態でデータが壊れた時の復旧手順をまとめてみました。シナリオとして •ある1カラム email をupdateしようとしたら、間違ってwhere 句を付け忘れ 全レコードをupdateしてしまった •気がついたのが半日後 というオペミスが発生したとします 1) データベー

  • PostfixのログをLogwatchでチェック - satospo

    これら全て、CentOS5標準のlogwatch-7.3.6で用意されているバージョンです。 Postfixのログファイルについて。 syslog経由で/var/log/maillog ファイルに保存 logrotateで毎週日曜日4:02にローテーションされる ローテーション後は /var/log/maillog.20091101 の形式で保存 3世代より前のログは /var/log/archives/maillog/2009/ に退避 年月はローテーション実施時にlogrotate内で算出 logfilesの設定 logfiles/maillog.confを環境に合わせて変更します。まず、元々の設定ファイルを/etc/logwatch/conf/logfiles/にコピーする。 [root]# cp \ /usr/share/logwatch/default.conf/logfile

  • MySQLバイナリログの仕様 – OpenGroove

    MySQLのバイナリログについて、うっすらまとめてみようかと。 RDBMSで更新ログまたはトランザクションログと呼ばれているログの機能は、 MySQLでは「バイナリログ」が担っている。 これらの内容は、「CREATE TABLE文やINSERT文といったデータベースの中身を 変更する操作を行った際の操作履歴を追跡できる形で記録した情報」であり、 コミットされたトランザクションの情報が保存される。 トランザクションログの中身はRDBMSによって異なり、「論理ロギング」と 「物理ロギング」がある。「論理ロギング」はSQL文レベルで変更履歴を管理し、 「物理ロギング」は変更があったデータブロックをバイナリイメージとして管理する。 MySQLのバイナリログは論理ロギングだが、OracleのREDOログやInnoDBログは 物理ロギングである。 バイナリログはデフォルトでは作成されないので、my.c

  • システム開発の備忘録 | MySQL - sleepプロセスが溜まる2

    MySQL4.0系を使っているサーバーでまたsleepプロセスが溜まる現象が発生した。 今回は時間が経過していくと一つ一つのプロセスのメモリ使用量が増えていくのが問題。今までそんなに重くなかったのに急にLAが平均10くらいになったよ・・・orz またsleepかよとか思って「MySQL sleep」でぐぐったら2番目にこのブログで書いた記事が出てきたorz その時と同じ方法で解決出来なさそうなので、もうちょっと深いとこまで突っ込んでみた。 sleepプロセスが溜まると、show processlist;を実行した場合やphpMyAdminでプロセスを表示した場合にすぐ分かる。 下記はphpMyAdminでプロセスを表示した例 sleepばっかりです。というかsleepしかありませんorz。 こういう状況が続くとシステムによっては問題が起きます。(今回がまさにそう) じゃあこのsleepって

  • サーバのログ監視ツールを使いこなそう

    Logwatchによるログの定期チェック swatchは出力されるログを監視して、指定したパターンが現れたときにアクションを起こすツールでした。しかし、パターンの含まれる行がそのまま表示されるため、ログを見慣れていないと少し戸惑うかもしれません。これに対して、「Logwatch」は(デフォルトでは)毎日夜間に実行され、ログから特定のパターンを含む行を比較的見やすい状態に加工して表示させることが可能です。 Logwatchのインストール 最近のRed Hat LinuxLogwatchがデフォルトでインストールされていますが、多くの場合バージョンが古いので、一度アンインストールします。

    サーバのログ監視ツールを使いこなそう
  • JavaScript開発にalertを使っている人必見!ログ出力ライブラリ「Blackbird」 | Web活メモ帳

    JavaScriptでログを表示するのに使えるライブラリ「Blackbird」のご紹介。 出力したいメッセージを指定するだけできれいに整形して表示してくれます。 例えば、以下のようなJavaScriptを実行してみます。 log.debug( 'this is a debug message' ); log.info( 'this is an info message' ); log.warn( 'this is a warning message' ); log.error( 'this is an error message' ); ↑すると、こんな感じで素敵に表示してくれちゃいます。 アイコンと色で視覚的にメッセージを区別することができるので、後から見分けるのも簡単です。 使い方 使い方は簡単で、ファイルをダウンロードした後、headタグ内でJSとCSSを読み込むだけでOKです。 <

    JavaScript開発にalertを使っている人必見!ログ出力ライブラリ「Blackbird」 | Web活メモ帳
  • Linux等でのログのモニタリングで簡単にアラートをキャッチするワンライナー - 元RX-7乗りの適当な日々

    昔、『「ping -a」で音が鳴る!』なエントリでも書いたのですが、何らかをリアルタイムにチェック/監視したい時に、視覚だけではなくアラート音が一緒に出ると、モニタリングしやすいものです。 というわけで、Linuxなんかで、とあるログファイルの出力から、ある文字列が検出された際に、ビープ音を鳴らすワンライナーは以下。 $ tail -f ログファイル | sed -e 's/\(対象文字列\)/\1^G/'上記を実行中に、指定ログファイルに対象文字列が出力されるとビープ(Beep)音が鳴るはず。 「^G」(0x07)の部分が、ASCIIのBELキャラクタのリテラルです。 $ echo -n "^G"などとしてやれば、ベル(ビープ音)が鳴りますよね。 ちなみに、「^G」は、[Ctrl-V] ⇒ [Ctrl-G] の順に入力してやればOK。emacsだと[Ctrl-Q] ⇒ [Ctrl-G]か

    Linux等でのログのモニタリングで簡単にアラートをキャッチするワンライナー - 元RX-7乗りの適当な日々
  • PHPで会員向けだけのコンテンツページ作成に便利な「LOG.ME.IN」:phpspot開発日誌

    Web Script Hub - Turnkey Solutions For Your Web Business PHPで会員向けだけのコンテンツページ作成に便利な「LOG.ME.IN」。 予め登録しておいたユーザのみにコンテンツを表示したいような場合に使えるPHPで出来た仕組みです。 特定部分のみを会員に表示したいような場合、会員の管理や認証に関わる部分はこの仕組がやってくれるので、1から組むよりも高速に構築出来ます。 使い方としては、最初に必要なライブラリを読み込むことで、認証ユーザかそうでないかを分けて、if 文によってコンテンツの出し分けを行います。 MySQLを使っており、100万ぐらいのユーザも対応できると謳われています。 ちょっとした会員サイトをお手軽に構築したい際に使えそうですね。

  • ログ監視ツール導入(SWATCH) - CentOSで自宅サーバー構築

    (1)SWATCHアクションスクリプト作成 SWATCHが検知したIPアドレスからの累積不正アクセス数が3回ごとまたは、引数でblock※と指定された場合、該当IPアドレスからのアクセスを24時間規制するシェルスクリプトを作成する ※Ping of Death等悪意のあるアクセスを即規制するためのオプション [root@centos ~]# vi /usr/local/bin/swatch_action.sh ← SWATCHアクションスクリプト作成 #!/bin/bash # SWATCHアクションスクリプト # # 引数1:ログ区切り文字を指定 # 引数2:ログ内IPアドレス位置を指定 # 引数3:該当IPアドレスからのアクセスを規制する場合blockを指定 PATH=/bin:/sbin:/usr/bin # 規制IPアドレス情報メール通知先設定 # ※メール通知しない場合は下記をコ