質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

296閲覧

python3.6のloggingについて

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/08/27 10:53

Python のloggingについて質問です。

python3.6系でflaskのコード内にログようにloggingモジュールを使って
出力をおこなっているのですがどうもバイト列しか書き込みができないようです。

python

1# ログの出力名を設定 2logger = logging.getLogger('LoggingTest') 3# ログレベルの設定 4logger.setLevel(0) 5# ログのファイル出力先を設定 6fh = logging.FileHandler("/var/www/test.docgack.com/public/log.dat") 7logger.addHandler(fh) 8# ログのコンソール出力の設定 9sh = logging.StreamHandler() 10logger.addHandler(sh) 11# ログの出力形式の設定 12formatter = logging.Formatter('%(asctime)s:%(lineno)d:%(levelname)s:%(message)s') 13fh.setFormatter(formatter) 14sh.setFormatter(formatter) 15logger.info("---------{}".format("文字列"))

上記の最後の行のようにマルチバイト文字列を書き込みたいのですが
エンコードして書き込むほかないのでしょうか?

あるいはstrオブジェクトでも書き込める設定があればご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2017/08/27 14:23 編集

「書き込みができないようです」の具体的な内容を書くべきでした。提示されたソースで「エラーなしに実行できるが、ログに書かれていない」ということに対する質問ですか?
退会済みユーザー

退会済みユーザー

2017/08/27 15:59

そうです!例えば logger.info("start");logger.info("マルチバイト");logger.info("end");と記述すると,ログファイルには確かに (1)start と(2)endと書き込まれます。ただし,<マルチバイト> という文字列はログに吐き出されてないようです。ただencode("***");してあげるとログに出力はされるようなのです。
quickquip

2017/08/28 01:18

ちょっと悩ましいです。質問のソースで logger.info("---------{}".format("文字列")) が書き込まれないのは、"strとbytesで挙動が違う"からではなくて"ログレベルがwarning以上になっている"せいなのです。実際に起きているのと同じ現象なのか確信が持てないですね……
退会済みユーザー

退会済みユーザー

2017/08/28 10:02

ご回答ありがとうございます!一度全ログレベルで吐き出すよう検証してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問