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

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

新規登録して質問してみよう
ただいま回答率
85.47%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

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

Q&A

解決済

1回答

316閲覧

flaskのloggerについて

todasan

総合スコア78

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

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

0グッド

0クリップ

投稿2024/02/15 02:25

編集2024/02/16 08:06

実現したいこと

pythonのflaskでログの機能が使えません。

発生している問題・分からないこと

/app/src/logs

該当のソースコード

・フォルダの階層 ├── app : Python3のイメージを基に作成されたDockerコンテナ用のディレクトリ。 │ ├── Dockerfile : Dockerでの設定 │ ├── requirements.txt : pipインストールされるPythonの外部モジュール │ └── src │ ├──__init__.py │ ├── api.py : オフラインバッチを実行するREST API用のファイル ※追加説明 │ ├── batch : バッチ処理一つにつき1ファイルのPythonスクリプトが入るディレクトリ ※ 追加説明 │ │ ├── __pycache__ : 説明省略 │ │ │ └── *.pyc │ │ └── bt012.py │ ├── conf : gunicornの設定ファイルが配置されるディレクトリ │ │ ├── __pycache__ : 説明省略 │ │ │ └── gunicorn_config.cpython-39.pyc │ │ └── gunicorn_config.py │ ├── download : FTPサーバーや外部から取得され、永続的に保存するファイルを配置するディレクトリ │ │ ├── *.txt │ │ ├── *.csv │ │ ├── *.xlsx │ │ └── *.pdf │ ├── json : プログラム内で使用するデータ │ │ ├── batchInformation.json │ │ ├── chohyoInformation.json │ │ ├── loggingInformation.json │ │ └── screenInformation.json │ ├── logs : Pythonのloogerを使用したロギングにより出力されるログファイルを配置するディレクトリ │ ├── sc001.py : ログイン画面処理ファイル │ ├── sc002.py : メニュー画面処理ファイル │ ├── static : フロントエンドで共通して使用されるスタイルシート・ライブラリ │ │ ├── css │ │ │ ├── bootstrap.min.css │ │ │ ├── bootstrap.min.css.map │ │ │ ├── flatpickr.min.css │ │ │ ├── monthSelect.css │ │ │ └── style.css │ │ └── js │ │ ├── custom_utility.js │ │ └── library │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── flatpickr │ │ ├── flatpickr_ja.js │ │ ├── jquery-3.6.1.min.js │ │ └── monthSelect.js │ ├── templates : ID事の画面処理ファイルに紐づけられたテンプレートHTMLファイル │ │ ├── layout.html : 画面共通で使用されるテンプレートHTMLファイル │ │ ├── pdf : PDF出力ファイル用テンプレートディレクトリ │ │ │ └── 24_BT003.html │ │ ├── sc001 : 画面処理ID「sc001」用のテンプレートディレクトリ │ │ │ └── login.html │ │ ├── sc002 : 画面処理ID「sc002」用のテンプレートディレクトリ │ │ │ └── index.html │ │ ├── sc003 : 画面処理ID「sc003」用のテンプレートディレクトリ │ │ │ └── file_download.html │ │ ├── ... │ │ ├── scXXX : │ │ │ └── ???.html │ │ ├── ... │ │ ├── sc032 : 画面処理ID「sc032」用のテンプレートディレクトリ │ │ │ └── codeID.html │ │ └── sc033 : 画面処理ID「sc033_01」と「sc033_02」共通のテンプレートディレクトリ │ │ └── codeID_form.html ├── docker-compose.yml └── web ├── Dockerfile └── httpd └── custom.conf ・docker-compose.yml version: '1' services: app: build: ./app networks: - apply_network volumes: - type: bind source: "C:/Users/pcuser/source_code/apply_jinji/app/flask_test_jisshi" # ログファイル出力ディレクトリの設定。開発時にはローカルPC上の任意のディレクトリを指定 target: "/app/src/logs" - type: bind source: "C:/Users/pcuser/source_code/apply_jinji/app/src" # Flaskディレクトリの設定。開発時にはローカルPC上の apply_jinji/app/src/ ディレクトリを指定 target: "/app/src/" environment: TZ: Asia/Tokyo web: build: ./web networks: - apply_network ports: - 80:80 volumes: - type: bind source: "C:/Users/pcuser/source_code/apply_jinji/app/apache_output" # Apacheログ出力先ディレクトリの設定。開発時にはローカルPC上の任意のディレクトリを指定 target: "/var/log/apache2" environment: TZ: Asia/Tokyo scheduler: build: ./scheduler networks: - apply_network environment: TZ: Asia/Tokyo tty: true privileged: true networks: apply_network: # volumes: # db-store: # volume名「db-store」としてデータを永続的に保持することができる。ホストとはマウントしていない。

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

docker-compose.ymlの記載に、ログの出力として、
以下を記載しています。
source: "C:/Users/pcuser/source_code/zeria_jinji/app/flask_test_jisshi"
target: "/app/src/logs"

以下のソースのcurrent_app.logger.info("【sc001_start】初期表示開始")から、
ログが出力するはずですが、/app/src/logsのログに、記載されません。

・sc001.py
from flask import Blueprint,render_template,make_response,request,redirect,current_app,session,jsonify
import flask_login
import json
import re
from utils import custom_login, custom_any, custom_request, custom_response, custom_psql

SCREEN_KEY = "sc001"
with open("json/screenInformation.json", encoding="utf-8") as f:
SCREEN_ALL = json.load(f)

with open('json/messageInformation.json') as f:
MESSAGE_ALL = json.load(f)

app = Blueprint(
SCREEN_ALL[SCREEN_KEY]["flask"]["simple_page"],
name,
url_prefix=SCREEN_ALL[SCREEN_KEY]["flask"]["url_prefix"],
template_folder=SCREEN_ALL[SCREEN_KEY]["flask"]["template_folder"],
static_folder=SCREEN_ALL[SCREEN_KEY]["flask"]["static_folder"]
)

@app.route('/')
def screen_sc001():
"""ログイン画面

ログイン画面を返す。

Returns:
str: ログイン画面のHTML
"""
return render_template(SCREEN_ALL[SCREEN_KEY]["template"], screens=SCREEN_ALL, screen_key=SCREEN_KEY, breadcrumb=custom_any.create_breadcrumb(SCREEN_KEY, SCREEN_ALL))

@app.route('/check', methods=["POST"])
def check_login():
"""ログイン認証

入力フォームのデータをデータベースと照らし合わせた認証を行い、正誤によりログイン処理とログイン失敗処理のいずれかを行う。

Returns:
obj: ログイン認証の結果が含まれる連想配列
"""
current_app.logger.info("【sc001_start】初期表示開始")
req = custom_request.Request(title="", data=dict(request.form))

init.py
ロギング設定
with open("json/loggingInformation.json", encoding="utf-8") as f:
dictConfig(json.load(f))

・loggingInformation.json
{
"version": 1,
"formatters": {
"default": {
"format": "[%(asctime)s] %(thread)d %(threadName)s %(levelname)-s [%(filename)s:%(lineno)3d] %(message)s"
}
},
"handlers": {
"wsgi": {
"class": "logging.StreamHandler",
"stream": "ext://flask.logging.wsgi_errors_stream",
"formatter": "default"
},
"output_file": {
"formatter": "default",
"class": "logging.handlers.RotatingFileHandler",
"filename": "logs/aplly_logger.log",
"mode": "a",
"maxBytes": 1048576,
"backupCount": 2
}
},
"root": {
"level": "DEBUG",
"handlers": ["wsgi", "output_file"]
}
}

補足

docker環境で、ビルド、ラン後に、
以下のsc001.pyの画面には来ています。
以下のディレクトリに、ログが出ません。
C:/Users/pcuser/source_code/zeria_jinji/app/src/logs
何かしらログを出す方法を、お聞きしてもよろしいですか。
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問レイアウトが崩れているので確認の上修正いただけますか?
markdownが壊れているだけでなく、tree表示中に文字化けもあります。

ログ設定している部分が書かれていませんが、デフォルトの場合のログレベルはwarningみたいなので、infoは出力されないのかもしれませんね。

投稿2024/02/16 04:35

FiroProchainezo

総合スコア2402

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

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

todasan

2024/02/16 04:59

FiroProchainezoさん tree表示中に文字化けは、消しました。treeはフォルダの説明なので、 プログラムではないです。 current_app.logger.warning("【sc001_start】初期表示開始")にしても、 結果は同じでした。apply_logger.logの作成日時が、本日の日付に、 ならなく、ログファイルが更新されていません。
FiroProchainezo

2024/02/16 06:03

とりあえず質問分を直していただけますか。インデントが狂っているので読めないです。 ログの設定を教えて下さい。どのような設定をしているのでしょうか? 何も設定していない場合は、Flaskのドキュメントによると通常sys.stderrに出るとあるので、以下のURLあたりを参考に、出力先を変更してみてはいかがですか。 https://qiita.com/KWS_0901/items/7163e52b4041b909f5bc ちなみに、全く記載が無いのでエスパーですが、gunicornを使っている場合、標準出力をデフォルトで出力するようになってないので、どこにも出ないはずです。
todasan

2024/02/16 08:11 編集

FiroProchainezoさん 質問文に、__init__.pyを追加しました。 __init__.pyのソースからloggingInformation.jsonを読み込んで、設定しています。 どうでしょうか。
FiroProchainezo

2024/02/16 08:30

質問文を直してはいただけないようですね。 申し訳ございませんが、質問文を脳内補完して見るのも限界ですので、私の回答はここまでとさせていただきます。 お力になれず申し訳ございません。
todasan

2024/02/19 00:51

FiroProchainezo さん 直したいのですが、テラタイルでは、どのようにインデントをつければ、 よろしいでしょうか。タブキーを押しても、インデントになりません でした。
todasan

2024/02/19 05:07

FiroProchainezo さん chatgptで検索したら、解決しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問