0

JavaEE WebApp 用の Logger メソッドをいくつか作成しようとしています。注釈といくつかの競合が発生した後、これをログクラスとして取得しました。

import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

import javax.enterprise.context.RequestScoped;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.Produces;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import abc.crm.util.LogEvents.*;

@Named
@RequestScoped
public class Resources {

@Produces @PersistenceContext
private EntityManager entityManager;

@Produces
public FacesContext produceFacesContext() {
    return FacesContext.getCurrentInstance();
}

private final static Logger LOG = Logger.getLogger(abc.crm.util.Resources.class.getName());
//This is another method doing the same thing.
public void doLogInfo(@Observes @LogInfo String message) {
    FileHandler logWriter;
    try {
        logWriter = new FileHandler("CRMLog.txt", true);
        logWriter.setFormatter(new SimpleFormatter());
        LOG.addHandler(logWriter);
        LOG.log(Level.INFO, message);
        logWriter.close();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}    

これは、修飾子を宣言した場所です。

public class LogEvents {
@Qualifier
@Target({ FIELD, PARAMETER })
@Retention(RUNTIME)
public @interface LogInfo {
}

@Qualifier
@Target({ FIELD, PARAMETER })
@Retention(RUNTIME)
public @interface LogWarning {
}

@Qualifier
@Target({ FIELD, PARAMETER })
@Retention(RUNTIME)
public @interface LogError {
}

@Qualifier
@Target({ FIELD, PARAMETER })
@Retention(RUNTIME)
public @interface LogDebug {
}

}

そして、これは私がイベントを発生させる場所です:

@Inject
@LogDebug Event<String> doLogDebug;

@Inject
@Deleted
private Event<Customer> customerDeleteEventSrc;

public String doAddCustomer() {
    doLogDebug.fire("Kunde kann jetzt angelegt werden");
    return customerEditController.setCustomerToEdit(Mode.ADD);//übergibt dem Controller den Kunden
}

ここでの問題は、FileHandler が Log.txt を正しく作成するが、そこにメッセージを書き込まないことです。私もそれを.xmlに書き込もうとしましたが、xml本体と空のスペース「ログ」を含むファイルを作成するだけで、メッセージはありません。文字列メッセージ パラメータが正しく配信されるかどうかは既に確認済みです。

これを解決するためのアイデアはありますか?

4

0 に答える 0