Witam. Użyłem w swoim programie logera i klasy ResourceBundles do lokalizacji. Chciałbym się jednak dowiedzieć czy moje rozwiązanie jest poprawne.
Mam aplikację, która składa się z wielu klas, w których loguję błędy. Chcę, żeby wszystko było zapisywane do jednego wspólnego pliku dla całej aplikacji. Napisałem więc taką klasę, ze statyczną zmienną:
public class AppLogger {
public static final Logger LOGGER = Logger.getLogger("Client");
static {
try (OutputStream fos = new FileOutputStream(new File("log.txt"))) {
Layout layout = new PatternLayout("[%p] %c - %m - Date: %d %n");
FileAppender fileAppender = new FileAppender(layout, "log.txt");
LOGGER.addAppender(fileAppender);
} catch (IOException ex) {
LOGGER.error("Error creating the file stream", ex);
}
}
}
potem tej zmiennej używam w aplikacji poprzez statyczny import i odwołanie:
import static pl.client.logger.AppLogger.LOGGER;
LOGGER.error("Application error", e);
Czy takie podejście ze statyczną zmienną jest prawidłowe?
Podobnie postępuję z plikiem lokalizacyjnym. Mam klasę localization:
public class Localization {
private static Locale LOCALE = Locale.getDefault();
public static ResourceBundle RES_BUNDLE = ResourceBundle.getBundle(
"pl.client.i18n.MyResources_pl_PL", LOCALE);
}
i używam zmiennej tego typu w różnych klasach analogicznie jak loggera:
import static pl.client.i18n.Localization.RES_BUNDLE;
RES_BUNDLE.getString("information");
Tutaj moje pytanie do bardziej doświadczonych osób czy takie podejście w obu przypadkach jest prawidłowe? Czy może stosuje się jakieś inne, lepsze rozwiązania?