• ベストアンサー

JAVAでログ出力するには?

はじめまして! 今困ってるのが、 JAVAのプログラムでSolarisにイベントログというかSolarisのシステムログに 出力する方法が分かりません。 そもそもログ出力ができるのかどうかもわからないので 「できる! できない!」だけでも教えていただければと 思います。 ではでは、よろしくお願いします。

  • Java
  • 回答数2
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • inetd
  • ベストアンサー率23% (43/184)
回答No.1

Java なので UNIX でしか使えない機能を組みこんではいないと思いますが。 (ちょっと探してみましたがそれらしいのは見つかりませんでした) で、 syslog だったら logger コマンドを Runtime#exec() で動かせば 良いんじゃないですか? これなら Linux などにもありますし、もし Windows 系の OS などの logger コマンドのない OS へ移植する事に なったとしても logger コマンドを作るだけで済むので楽だと思います。 コマンドの詳細については man logger で見てください。

appipi
質問者

お礼

ありがとうございます!!! 実は、こういった質問の投稿とかって初めてだったんで、 こんな早く返事がもらえてかなり感激です! 僕もJAVAなのでそういったAPIはないと思ったんですけど、 同じSunだからもしかして。。。、と探していたんですけど、 やっぱりないですよねー >logger コマンドを Runtime#exec() で動かせば 良いんじゃないですか? 僕は初心者とそんな変わらないんであれなんですが、Cとかで バッチをつくるということですよね? では、ぜひそうさせていただきます。 本当にどうもありがとうございました。

その他の回答 (1)

  • inetd
  • ベストアンサー率23% (43/184)
回答No.2

> 僕は初心者とそんな変わらないんであれなんですが、Cとかで > バッチをつくるということですよね? ちょっと違います。 logger コマンドを Java から動かすのです。 java.lang.Runtime のドキュメントを見て下さい。 http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/lang/Runtime.html GNU の logger コマンドのマニュアルページはこれです(Solaris のやつとは少し違います)。 http://www.linux.or.jp/JM/html/util-linux/man1/logger.1.html それで、たとえばこんな感じになります。 Runtime.getRuntime().exec("logger hello"); 注) 事前に /etc/syslog.conf の設定をしておく必要があります。

appipi
質問者

お礼

お礼を言うのが遅くなりましてすいません。 おかげさまで何とかなりそうです。 本当にありがとうございました。

関連するQ&A

  • Javaでlog4jを使ってログ出力を行っています。

    Javaでlog4jを使ってログ出力を行っています。 環境は以下の通りです。 j2sdk1.4.2 log4j1.2.8 log4j.xml内で指定したログファイル(test.log)を別のアプリで開いた状態で Javaプログラムを実行するとコンソールに以下のエラーが出力されます。 【エラー発生処理】 DOMConfiturator.configure(log4j.xml); 【エラー内容】 log4j:ERROR setFile(null, true) call failed java.io.FileNotFoundException : test.log(プロセスはファイルにアクセスできません。 別のプロセスが使用中です。) ファイルを開いているために書き込めず、エラーになってしまうのは良いのですが、 ログを出力しないだけで処理自体は続行してしまいます。 (ログを書き込めなかったらそこで処理を終了したいです。) 「書き込めなかった場合に例外をcatchする」等のことは可能でしょうか?

    • ベストアンサー
    • Java
  • Java ログ出力方法

    バッチプログラムを作成中なのですが、ログの出し方で悩んでいます。 ログファイルを「バッチID」と「処理日付」の組み合わせで動的に変更したいと思っています。 また、ログは各クラスで出力したいと思っています。 悩んでいる箇所は ・どのようにしてバッチIDを動的に取得してログファイル名として設定するか ・複数のパッケージのクラスを使用するバッチの一連の処理をどのようにして一つのログファイルに出力するか の2点あり、対応方法が検討もつかない状態です。 使用しているライブラリはlog4j 1.2.16.jarです。 アドバイスをいただけないでしょうか。 よろしくお願いいたします。 例として、下記のようなバッチを考えています。 foo.bar.mainパッケージにはpublic static void main(String[] args)のメソッドをもつクラスを配置します。 foo.bar.commonパッケージにはfoo.bar.mainに配置したクラスから共通で利用する処理を実装したクラスを配置します。 foo.bar.main +- Batch1.class +- Batch2.class ・ ・ ・ foo.bar.common +- Common1.class +- Common2.class +- Common3.class ・ ・ ・ 処理の流れで言うと、 Batch1を実行する場合 1. javaコマンドでBatch1実行、Batch1クラスでログを出力 2. Batch1からCommon1クラスのメソッドを実行、Common1クラスでログを出力 3. Batch1からCommon2クラスのメソッドを実行、Common2クラスでログを出力 4. 処理終了 ログは「Batch1_20120612.log」に全て出力される。 Batch2を実行する場合 1. javaコマンドでBatch2実行、Batch2クラスでログを出力 2. Batch2からCommon1クラスのメソッドを実行、Common1クラスでログを出力 3. Batch2からCommon3クラスのメソッドを実行、Common3クラスでログを出力 4. 処理終了 ログは「Batch2_20120612.log」に全て出力される。

    • ベストアンサー
    • Java
  • ログの初期化について

    今、あるプログラムを実行中に実行ログをリダイレクトで出力しています。 プログラムを実行したままで、そのログを初期化したいのですがうまくいきません 1.java aaa >> pglog.log[Enter]で、ログを出力 2.aaaのプログラムは実行中のまま、pglog.logを初期化   cp /dev/null pglog.log[Enter]  ※コレを実行後、1度ログはZEROバイトにはなる 3.aaaのプログラムの操作する(ログ出力のため) すると、ファイルサイズが前回のログ+今回のログと なってしまいます。 また、中身も前回ログは見た目にはないのですが、全て スペースに置き換わった形であるようなのです。 ログが大きくなりすぎるのを防ぎたいのですが、 よい方法があれば教えてください! よろしくお願いします。

  • 【C#】 ログ出力で便利なオープンソース

    タイトルの通り、C#でログ出力に便利なオープンソースを探しています。また、以下要件を満たすものを探しています。 1. イベントログ出力ができる。[リモートのサーバにも出力可]。 2. ログをファイルに出力する機能をもつ。 3. 利用者多数。(問題に直面した時、解決しやすいため) log4net??[log4jを参考にしてる]かな?このオープンソースの情報はweb上でよく見かけてたのでいいかな~って思ったのですが、イベントログの出力はローカルマシンのみ許可しているとのこと。 いいのしってるよーー!!っていう方、教えてください。

  • Javaでlog4jを使ってログを出力させてます。

    Javaでlog4jを使ってログを出力させてます。 複数のログを出力したいので、同一propertiesに複数のAppenderを定義しています。 内容は以下の通りです。 log4j.logger.processA=DEBUG, A log4j.appender.A=org.apache.log4j.DailyRollingFileAppender log4j.appender.A.File=a.log log4j.appender.A.DatePattern='.'yyyy-MM-dd-HH-mm log4j.appender.A.Append=true log4j.appender.A.layout=org.apache.log4j.PatternLayout log4j.appender.A.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p %c - %m%n log4j.logger.processB=DEBUG, B log4j.appender.B=org.apache.log4j.DailyRollingFileAppender log4j.appender.B.File=b.log log4j.appender.B.DatePattern='.'yyyy-MM-dd-HH-mm log4j.appender.B.Append=true log4j.appender.B.layout=org.apache.log4j.PatternLayout log4j.appender.B.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p %c - %m%n log4j.logger.processC=DEBUG, C log4j.appender.C=org.apache.log4j.DailyRollingFileAppender log4j.appender.C.File=c.log log4j.appender.C.DatePattern='.'yyyy-MM-dd-HH-mm log4j.appender.C.Append=true log4j.appender.C.layout=org.apache.log4j.PatternLayout log4j.appender.C.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p %c - %m%n processAやらprocessB、processCは同一サーバ内で非同期で動くプロセスです。 つまり、動作するプロセス毎にログ出力先を変えてます。 各プロセスを動かすと、ちゃんと想定したログファイルに出力されるんですが、 ローテートの時に「log4j:ERROR Failed to rename ~」のエラーが出て、 正常にローテートしません。 なぜだろうと思って、一度全てのログファイルを削除して、 processAだけ動かしてみました。 すると、a.logだけが出力されると思いきや、 b.logとc.logまで0kbではありますが出力されたんです。 つまり、データこそ出力しないけど、 他プロセスで出力するファイルをロックしてたんです。 これって、同一propertiesに書いているのが悪いんでしょうか? それとも、設定が不足している為、そうなってしまってるんでしょうか? ご存知の方、お知恵をお貸し下さい。

    • ベストアンサー
    • Java
  • [log4j]ログ出力クラスでのメソッド名出力方法

    お世話になっております。 現在log4jを使用したログの出力を検討しております。 その中で1点質問させてください。 Javaの初心者のため、質問がわかりにくいかもしれません。 申し訳ございません。 【質問】 クラスAのinit処理の中でログ出力用クラスBをインスタンス化し、 クラスAのメソッドCの中で、ログ出力用クラスBのログ出力メソッドDを実行することでログ出力させる方法を考えております。 ここでメソッドDで出力させるログの中にメソッドCの名前を出力させたいのですが、 方法がわかりません。 わかる方、教えていただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • java 出力されたexcelを並べ替え

    お世話になっております。 現在javaでexcelを出力するプログラムを組んでおります。 excelには無造作に1列目に一桁の数字が入って行きます。 行数はこちらで指定しているのですが、その出力されたものをプログラム上で自動的に昇順に並べ替えてくれるプログラムはあるのでしょうか? excelで並べ替えれば早いことなのですが、javaの方から実行できないかと考えております。 調べても出てこなかったのでお知恵をいただければと思います。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Apacheのログ出力方法とローテーションについて

    Apacheのログ出力方法とローテーションについて教えてください。 apacheとweblogicとJavaを使ってweb開発をしています。 現状、httpd.confでエラーログとアクセスログを出力していて、今度からWebLogicの プラグインログ(WLLogFile)を追加出力しようと考えています。 エラーログとアクセスログのログローテーションは別サーバのUNIXクーロンと作成した プログラムを用いて行なっていますが、今度追加するプラグインログをローテーション するとなるとそのプログラムに修正が入ってしまうため、それを避けるためにApacheの httpd.confのrotatelogsでログローテーションを行いたいと思っています。 色々調べて見てエラーログとアクセスログについてはログローテーションは できたのですが、WLLogfileで出力するログについてはローテーションが行なえません。 rotatelogsではそもそもエラーログとアクセスログ以外はローテーションできないのか、 それとも自分のやり方が間違っているのか分からなくなってきてしまったため、質問 させて頂いてます。 ちなみにプラグインログはhttpd.conf内で以下のように設定しています。 #Weblogic Config <IfModule mod_weblogic.c> WebLogicHost サーバのIPアドレス WebLogPort ポート番号 MachExpressoion *.* Debug ERR WLLogFile "C:/Apache/logs/wlproxy.log" ☆やりたいことのイメージ↓ #WLLogFile "|C:/Apache/bin/rotatelogs C:/Apache/logs/wlproxy.log 86400" </IfModule> 環境は以下です。 Apache/2.2.9(Win32) Windows Server 2003 宜しくお願いします。

  • auth.logが出力されない。

    linuxサーバを立てsshを外部から接続しようとしていますが苦労しています。 接続が拒否されているのでログを確認しようとしたのですが、様々なWEBで調べたところauth.logに出力されるようですが見つかりません。 私の環境ではそもそもauth.logが出力されていないようです。 認証に使用するログのようなので標準出力だと思っていたのですが自分で適切な設定を行わないといけないのでしょうか? 詳しい方回答いただけますでしょうか? よろしくお願いします。 OS:vine2.6

  • 複数のプログラムのログを1つのログファイルに出力

    初めて質問させていただきます。 Bourne Shell(Bシェル)のいくつかのプログラムで1つのログファイルを 使用したいと考えています。 ログファイルは、 echo ログ >> ログファイル といった形で出力予定です。 ただ業務の仕様上、シェルプログラムが同時に動く可能性があるのですが そうした場合、やはり片方のログが出力されないといったことになるのでしょうか? よろしくお願いします。

専門家に質問してみよう