Użycie loggera oraz resourceBundles w programie javowym.

Użycie loggera oraz resourceBundles w programie javowym.
O1
  • Rejestracja:ponad 14 lat
  • Ostatnio:8 dni
0

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ą:

Kopiuj

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:

Kopiuj
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:

Kopiuj
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:

Kopiuj
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?

edytowany 1x, ostatnio: olek1
O1
  • Rejestracja:ponad 14 lat
  • Ostatnio:8 dni
0

Nikt nie jest w stanie pomóc, czy dobrze to wszystko zrobiłem?

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 9 godzin
1

Dlaczego tworzysz loggera programowo? Normalni ludzie tworzą XMLa z konfiguracją i taki np logback wcina go bez zbędnego kombinowania.

Statycznego stanu najlepiej unikać (no chyba, że to stałe zawarte w pełni w kodzie). Loggery można zostawić statyczne, ale już nad resource bundles bym się zastanowił, tzn czy nie użyć tutaj np wstrzykiwania zależności czy jakiegoś wzorca.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit
KA
KA
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Warszawa
  • Postów:1683
1

jak korzystasz z java 8 możesz sobie zrobić coś takiego:
https://www.opencredo.com/2015/01/30/traits-java-8-default-methods/


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.