QA@IT
«回答へ戻る

回答を投稿

こちらページSampleLogging3.java では、

LOGGING_PROPERTIES_DATAにpropertiesファイルの内容を直接記載して、InputStream を介して Loggerに設定情報を読み込ませています。

    static {
        final Logger logger = Logger.getLogger("SampleLogging");
        InputStream inStream = null;
        try {
            inStream = new ByteArrayInputStream(              // この2行
                LOGGING_PROPERTIES_DATA.getBytes("UTF-8"));
            try {
                LogManager.getLogManager().readConfiguration(
                    inStream);

提示のソースでは InputStreamが生成されないまま 渡されています。

        //ロガー
        //ログプロパティのセッティング
        String logsetting
        = "handlers=java.util.logging.ConsoleHandler\n"
        /*省略*/

        static {
                final Logger l = Logger.getLogger("exam");
                InputStream in = null;                                 
                try {
                     // ここで何もしてない
                     LogManager.getLogManager().readConfiguration(in); 
                     l.info("ログプロパティをセッティング");

そのためエラーが発生しています。
tryがネストしてるので見間違えたんでしょうね。自分でタイプしたからでしょうか。

おそらくエラーは NullPointerExceptionだと思います。
エラーメッセージとともに追加情報(StackTrace)があれば、
NullPointerException at java.util.logging.LogManager.readConfiguration の様な行があるかもしれません。


本題からはずれて個人的に思っている事ですが、サンプルから真似して付け足したあとで(具体的には理解できないまでも)なんとなくコードが何をしてるか眺めてみるといいと思いますよ(「あぁ、ここでnewしてるな」とか「ここでさっきnewしたの渡してるな」とか)。
私の経験だと、ただ真似してタイプしているだけだと結局記憶にも残らなかったりします(打ち込んだ達成感で終わってしまったり)。いろいろとみているうちにパターンが見えてきて、見るべき部分がわかってきたりすることも。
個人差があると思いますのであくまで私の場合の話ですが。

今回で言えば、「nullのまま使っているな」と気付ければしめたものです。

[こちらページ](http://www.atmarkit.co.jp/ait/articles/0801/08/news128_2.html)の `SampleLogging3.java` では、

LOGGING_PROPERTIES_DATAにpropertiesファイルの内容を直接記載して、InputStream を介して Loggerに設定情報を読み込ませています。

```java
    static {
        final Logger logger = Logger.getLogger("SampleLogging");
        InputStream inStream = null;
        try {
            inStream = new ByteArrayInputStream(              // この2行
                LOGGING_PROPERTIES_DATA.getBytes("UTF-8"));
            try {
                LogManager.getLogManager().readConfiguration(
                    inStream);
```

提示のソースでは InputStreamが生成されないまま 渡されています。

```java
        //ロガー
        //ログプロパティのセッティング
        String logsetting
        = "handlers=java.util.logging.ConsoleHandler\n"
        /*省略*/

        static {
                final Logger l = Logger.getLogger("exam");
                InputStream in = null;                                 
                try {
                     // ここで何もしてない
                     LogManager.getLogManager().readConfiguration(in); 
                     l.info("ログプロパティをセッティング");
```

そのためエラーが発生しています。
tryがネストしてるので見間違えたんでしょうね。自分でタイプしたからでしょうか。

おそらくエラーは NullPointerExceptionだと思います。
エラーメッセージとともに追加情報(StackTrace)があれば、
`NullPointerException at java.util.logging.LogManager.readConfiguration` の様な行があるかもしれません。

---

本題からはずれて個人的に思っている事ですが、サンプルから真似して付け足したあとで(具体的には理解できないまでも)なんとなくコードが何をしてるか眺めてみるといいと思いますよ(「あぁ、ここでnewしてるな」とか「ここでさっきnewしたの渡してるな」とか)。
私の経験だと、ただ真似してタイプしているだけだと結局記憶にも残らなかったりします(打ち込んだ達成感で終わってしまったり)。いろいろとみているうちにパターンが見えてきて、見るべき部分がわかってきたりすることも。
個人差があると思いますのであくまで私の場合の話ですが。

今回で言えば、「nullのまま使っているな」と気付ければしめたものです。