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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

728閲覧

pythonでログを別のターミナルで表示させたい。

Yuiti628

総合スコア71

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/09/09 15:38

やりたいこと

スクレイピング機能のwinsowsアプリケーションの作成

困っていること

ログを出力して、現状を確認したが、いらない出力が多くて肝心のものが把握できなくなる

こうしたい

出力したいものだけを表示する場所が欲しい

環境

Pyhton 3.8.2
Linux
ExpressVPN

内容

1 vpnを使いipを切り替えてからスクレイピング
2 1回の処理の終わってから結果を出力
3. 1〜2を無限ループ

いらない出力とは

vpnの接続、切断するタイピングでのログ

shl

1Connecting to Smart Location... 2Connecting to Japan - Tokyo... 100.0% 3Connected to Japan - Tokyo 4 5 - To check your connection status, type 'expressvpn status'. 6 - If your VPN connection unexpectedly drops, internet traffic will be blocked to protect your privacy. 7 - To disable Network Lock, disconnect ExpressVPN then type 'expressvpn preferences set network_lock off'.

スクレイピングでの混合コンテンツ警告?文

shl

1Connecting to Smart Location... 2Connecting to Japan - Tokyo... 100.0% 3Connected to Japan - Tokyo 4 5 - To check your connection status, type 'expressvpn status'. 6 - If your VPN connection unexpectedly drops, internet traffic will be blocked to protect your privacy. 7 - To disable Network Lock, disconnect ExpressVPN then type 'expressvpn preferences set network_lock off'.

shl

1[0902/032212.223:INFO:CONSOLE(80)] "react-intl-universal key "error_param" not defined in ja", source: https://***** (80) 2[0902/032212.538:INFO:CONSOLE(80)] "react-intl-universal key "common_Loading" not defined in ja", source: https://***** (80) 3[0902/032212.876:INFO:CONSOLE(1)] "sdkperf: it took 62 ms and 65210 bytes to load https://*****", source: https://***** 4(1) 5[0902/032212.879:INFO:CONSOLE(1)] "sdkperf: asyncstart logged after 1031 ms", source: https://***** (1) 6[0902/032212.888:INFO:CONSOLE(1)] "sdkperf: init logged after 1042 ms", source: https://***** (1) 7[0902/032212.906:INFO:CONSOLE(1)] "domReady", source: https://*****(1) 8[0902/032212.908:INFO:CONSOLE(1)] "The "fb-root" div has not been created, auto-creating", source: https://***** (1) 9[0902/032213.019:INFO:CONSOLE(0)] "Mixed Content: The page at 'https://www.*****5' was loaded over HTTPS, but requested an insecure video 'http://*****y46Yw%3D%3D&vl=&vr='. This content should also be served over HTTPS.", source: https://***** (0) 10[0902/032213.293:ERROR:audio_manager_base.cc(389)] Invalid audio output parameters received; using fake audio path: format: PCM_LINEAR, channel_layout: 0, channels: 0, sample_rate: 0, frames_per_buffer: 0, effects: 0, mic_positions:

考えたこと、試したこと

1. tkinterのTreeviewを使って表示する。
これはループの途中で追加していくことができないため、無限ループとは相性が悪いと判断して諦めました。
(追加できるなら教えてください)

  1. loggingで制御

ファイルに出力などできましたが、一々開かないで良いようにターミナルでログを見たいです。

  1. expressvpnに接続した時に出るログを出ないようにする

使用上無理と言われました。

  1. 警告文をなくす

python

1options = Options() 2#ドライバーパス 3driver_path = './chromedriver' 4 5options.add_argument('--headless') 6options.add_argument('--enable-logging') 7options.add_argument('--allow-insecure-localhost') 8options.add_argument('--disable-gpu') 9options.add_argument('--ignore-certificate-errors') 10options.add_argument('--log-level=0') 11driver= webdriver.Chrome(driver_path, chrome_options=options)

これらを入れて消えませんでした。

これらを試して、新しいターミナルを表示して、そちらに出力できないかな?と思いこちらに質問させて頂きました。

私の実力では中々記事が見つからなくて、実現可能なのかも判断できていません。

ログをファイルに出力なら確実に可能だとは思いますが、できるだけリアルタイムでログが動いているところを見たいです。

別のウィーンドーを作成するなどでも良いのですか、良いアイデアはないでしょうか?

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

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

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

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

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

guest

回答3

0

これらを試して、新しいターミナルを表示して、そちらに出力できないかな?

こういうことですか?

新しいターミナルでコマンドttyを実行し、デバイスファイル名を調べます。

$ tty /dev/pts/0

調べたデバイスファイルに書き込めば、書き込んだ内容が新しいターミナルに出力されます。

$ echo 'Hello, world!' > /dev/pts/0

ログファイルへの書き込みができているのであれば、ログファイルの代わりにデバイスファイルに書き込めば、ログは新しいターミナルへ出力されます。

ただ、新しいターミナルを閉じてしまうと、書き込みエラーが発生すると思うので、実用的かどうかは、うーん。
まぁ、その辺の判断はおまかせします。

投稿2020/09/10 12:28

katsuko

総合スコア3538

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

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

0

時々刻々出力されるログファイルを tail コマンドで監視するのは如何でしょうか?
-f オプションがあれば、追記を追いかけてくれます。

tail -f logfile.txt

みたいな感じです。

https://qiita.com/Cesaroshun/items/6fdbccd2ea00e9c7944d

投稿2020/09/10 11:53

編集2020/09/10 11:54
hiro-k

総合スコア902

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

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

0

ベストアンサー

loggingで制御

ターミナルで出力を分けたりすることはできないので、logging で制御してファイルごとに分けるのがいいと思います。

ファイルに出力などできましたが、一々開かないで良いようにターミナルでログを見たいです。

SSH 接続できるのであれば、VS Code に公式拡張「Remote - SSH」を入れてサーバーに接続し、ファイルを開けば、ファイルが更新されればリアルタイムに開いている内容が更新されるので、実質ターミナルに出力するのと同じ使い勝手で閲覧できます。

投稿2020/09/09 16:01

編集2020/09/09 16:02
tiitoi

総合スコア21956

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

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

Yuiti628

2020/09/09 16:18

なるほど。 やはり、無理なんですね。 因みに、sshができない場合ではいい方法がありませんか?
tiitoi

2020/09/09 16:21

サーバー上のターミナルにどのようにアクセスしているのでしょうか?
tiitoi

2020/09/09 16:30 編集

ちなみに質問に書いてある > tkinterのTreeviewを使って表示する。 > これはループの途中で追加していくことができないため、無限ループとは相性が悪いと判断して諦めました。 ですが、tkinter が動いてるのとは別スレッドで while ループを実行すればフリーズしないと思います。 スレッド間でメッセージをやり取りしたりする必要があるなどマルチスレッドの知識がないと少々ややこしいですが、技術的には可能です。 ---- ログが大量に出てきてアプリケーションのログがわからなくなるというのであれば問題ですが、質問欄に貼ってある行数程度であれば無視してもいいのではと思いました。
Yuiti628

2020/09/10 00:32

いえ、サーバー機で実装するときはsshで大丈夫なのですが、ローカルで開発する時の話でした。 便利なツールなどないかなと。 tkinterは可能なんですね。 けれど、ちょっと諦めます。 ログですが、一回のループで、50ほどのurlにアクセスして、その一回ずつであの行数出てしまします。 そのため、ループが終わった後に、1行だけの出力は見つからないので困ってしまいました。 説明不足で申し訳ありません。
tiitoi

2020/09/10 03:08

ローカルならログファイルをそのまま VS Code で開くだけでいいのではないでしょうか。ファイルが更新されると自動で開いてる内容も更新されます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問