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

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

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

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2479閲覧

Javaのコンソールに表示される内容をログファイルに出力する方法について

monti15

総合スコア5

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/03/10 07:37

Java初心者です。

Javaのコンソールに表示されている内容をログファイルに出力したいのですが
どのような実装をしたらよいのでしょうか。

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

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

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

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

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

m.ts10806

2020/03/10 08:56

自身で調べたこと試したことを具体的に追記してください。 この内容だと何もしてないのと同じです
momon-ga

2020/03/11 02:56

やろうとしてることで難易度がずいぶんかわります。 ログファイルに出力するついでに、コンソール出力するのでよいのか。 既存のSystem.outに対して出力した内容をログファイルに出力するのか。 前者で問題よいのでしょうか?
m.ts10806

2020/03/11 04:01

質問は編集できます。 指摘が入るということはそれだけ要件が不明瞭ということです。 また回答にも無反応のまま解決とされてますが、本当に理解できたのでしょうか? あまり今回のようなスタンスを続けられるようだと、そのうちだれもアドバイスしなくなりますよ。
guest

回答2

0

ベストアンサー

java.util.loggingをつかってみる。

java

1import java.io.OutputStream; 2import java.nio.file.Files; 3import java.nio.file.Path; 4import java.nio.file.Paths; 5import java.nio.file.StandardOpenOption; 6import java.time.LocalDateTime; 7import java.util.logging.*; 8 9public class HogeLog { 10 public static void main(String[] args) throws Exception { 11 12 final Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); 13 logger.setLevel(Level.FINEST); 14 15 final Path logFilePath = Paths.get("./xx-log.txt"); 16 final OutputStream os = 17 Files.newOutputStream(logFilePath, 18 StandardOpenOption.CREATE, StandardOpenOption.APPEND); 19 final Handler handler = new StreamHandler(os, new SimpleFormatter()); 20 handler.setLevel(Level.FINEST); 21 logger.addHandler(handler); 22 23 logger.log(Level.FINEST, LocalDateTime.now().toString()); 24 logger.log(Level.FINER, LocalDateTime.now().toString()); 25 logger.log(Level.FINE, LocalDateTime.now().toString()); 26 logger.log(Level.CONFIG, LocalDateTime.now().toString()); 27 logger.log(Level.INFO, LocalDateTime.now().toString()); 28 logger.log(Level.WARNING, LocalDateTime.now().toString()); 29 logger.log(Level.SEVERE, LocalDateTime.now().toString()); 30 logger.log(Level.ALL, LocalDateTime.now().toString()); 31 } 32}

実際に運用をはじめると、ログのサイズがでかくなったらどうするか、ファイルサイズで切り替えるのか日毎に切り替えるのか、いつまで保存するのか、保存するときは圧縮するのか、出力するログのレベルはどうするか、フォーマットはどうするか、などなど、考慮すべき点はわんさかと出てきます。そうなったときは、m.ts10806さんが書かれたように、log4jとかを採用するのがいいかもしれません。
「初心者」という自己紹介でしたのでjdk提供の範囲でできることを提示してみました。

投稿2020/03/10 08:42

編集2020/03/10 11:21
shiketa

総合スコア4061

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

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

0

代表的なのは「log4j」とかだと思いますが、割りとこの手のものは調べればたくさん出てきます。

投稿2020/03/10 07:48

m.ts10806

総合スコア80875

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

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

m.ts10806

2020/03/10 08:55

ああー… コンソールの出力内容は難しいか。 どこまで調べて試したかどうかのほうが本来突っ込みたかったところなんですけどね。
shiketa

2020/03/11 11:52

身内に対してなら、もすこし突き放すのですけれどね。 なかなかまだ加減がつかめていません。ご容赦くだされ。
m.ts10806

2020/03/11 11:56

基本的には「なぜ低評価にしたか」「どう修正したらいいか」をコメントで突っ込んでもらったら良いと思います。そうすることで私も間違いに気づいたり、伝わりづらかったことを改めることができますし、あとから同じような問題を抱えた人などが見たときに参考にもなるので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問