"Giç ýagşy, bu gün senagat meýdançasynda bir waka ýazga alyndy, işläp düzüjiden derňew toparyna goşulmagyny haýyş edýärin." Iş günleriňiziň birinde şuňa meňzeş bir zat başlap biler ýa-da irden bolup biler - tapawudy ýok. Let'söne başdan başlalyň. JavaRush-da bu ýerdäki meseleleri çözmek bilen, işleýän we garaşylýan zady ýerine ýetirýän kod ýazmagy öwrenýärsiňiz. Kömek bölümine seretseňiz , munuň hemişe birinji gezek işlemeýändigi düşnüklidir. Iş ýerinde-de edil şonuň ýaly bolar. Bir meseläni hemişe ilkinji gezek çözüp bilmersiňiz: kemçilikler baky ýoldaşlarymyz. Bugalňyşlyk hadysalaryny dikeltmek möhümdir. Bir mysal bilen başlalyň. Polisiýa işgärdigiňizi göz öňüne getireliň. Wakanyň bolan ýerine çagyryldyňyz (dükanda aýna döwüldi), geldiňiz we bolup geçen zatlar hakda sizden jogap garaşýarlar. Nireden başlamaly? Polisiýanyň nähili işleýändigini bilemok. Örän şertli - şaýatlary, subutnamalary we beýleki zatlary gözläp başlaýarlar. Placeeriň özi näme bolandygyny jikme-jik aýdyp bilse näme etmeli? Mysal üçin, şuňa meňzeş:
- 21:59 eýesi jaňy ýakdy (doly işjeňleşýänçä 5 minut)
- 22:00 eýesi gapyny ýapdy
- 22:05 doly duýduryş işjeňleşdirilmegi
- 22:06 eýesi tutawajyny çekdi
- 23:15 ses datçigi açyldy
- 23:15 itleriň bir topary gaty ses bilen geçip gitdi
- 23:15 ses datçigi öçdi
- 01:17 Ekranyň daşky aýnasyndaky zarba datçigi açyldy
- 01:17 bir kepderi stakana uçdy
- 01:17 aýna döwüldi
- 01:17 siren
- 01:17 kepderi özüni silkdi we uçup gitdi
java.util.Logger
: biri-birimizi tanamak ýeterlikdir. Her gündelik ýazgyda sene-wagt, hadysanyň derejesi, habary bar. Sene we wagt awtomatiki girizilýär. Çäräniň derejesi habaryň awtory tarapyndan saýlanýar. Birnäçe derejeler bar. Esasylary maglumat, düzediş, ýalňyşlyk.
- INFO - köplenç bular bolup geçýän zatlar hakda maglumat senesi, senesi boýunça taryh ýaly bir zat: 1915 - bir zat boldy, 1916 - başga bir zat.
- DEBUG - belli bir pursatdaky wakalary has jikme-jik suratlandyrýar. Mysal üçin, taryhdaky söweşiň jikme-jiklikleri düzediş derejesinde. " Serkerde Takoýtowiç goşuny bilen Selowiça obasyna tarap öňe gitdi ."
- RAL .YŞLYK - ýüze çykýan ýalňyşlyklar adatça şu ýerde ýazylýar. Bir zady gurşasaňyz
try-catch
, blokuňcatch
ýerine çalşylýandygyny gören bolsaňyz gereke.printStacktrace()
. Diňe konsola girişi çykarýar. Kitap ýazgysyny ulanyp, bu ýazgyny ýazgyça iberip bilersiňiz (haha), pikiri alarsyňyz. - DUNDURYŞ - duýduryşlar şu ýerde ýazylýar. Mysal üçin, awtoulagda aşa gyzýan yşyk. Bu diňe duýduryş, bir zady üýtgetmek has gowudyr, ýöne bu bökdençlik däl. Enjam döwülende, RALRYŞLYK derejesi bilen gireris.
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.append = true
java.util.logging.FileHandler.pattern = log.%u.%g.txt
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
Bu ýagdaýda hemme zat ýazyjynyň bir faýla we konsola bir wagtda ýazmagy üçin düzülendir. Şu ýagdaýda? konsolda bir zat pozulsa, faýl bilen gözlemek has aňsat. Ikisine-de INFO derejesi. Faýl üçin at nagşy hem görkezilýär. Bu, konsola we faýla birbada ýazmaga mümkinçilik berýän minimal konfigurasiýa. faýldaky köne ýazgylar pozulmaz ýaly dogryjava.util.logging.FileHandler.append
düzüldi . Ulanyşyň mysaly şeýledir (düşündirişsiz, ýazyjynyň özi teswir berýär):
public class Main {
static Logger LOGGER;
static {
try(FileInputStream ins = new FileInputStream("C:\\log.config")){ \\полный путь до file с конфигами
LogManager.getLogManager().readConfiguration(ins);
LOGGER = Logger.getLogger(Main.class.getName());
}catch (Exception ignore){
ignore.printStackTrace();
}
}
public static void main(String[] args) {
try {
LOGGER.log(Level.INFO,"Начало main, создаем лист с типизацией Integers");
List<Integer> ints = new ArrayList<Integer>();
LOGGER.log(Level.INFO,"присваиваем лист Integers листу без типипзации");
List empty = ints;
LOGGER.log(Level.INFO,"присваиваем лист без типипзации листу строк");
List<String> string = empty;
LOGGER.log(Level.WARNING,"добавляем строку \"бла бла\" в наш переприсвоенный лист, возможна ошибка");
string.add("бла бла");
LOGGER.log(Level.WARNING,"добавляем строку \"бла 23\" в наш переприсвоенный лист, возможна ошибка");
string.add("бла 23");
LOGGER.log(Level.WARNING,"добавляем строку \"бла 34\" в наш переприсвоенный лист, возможна ошибка");
string.add("бла 34");
LOGGER.log(Level.INFO,"выводим все элементы листа с типизацией Integers в консоль");
for (Object anInt : ints) {
System.out.println(anInt);
}
LOGGER.log(Level.INFO,"Размер equals " + ints.size());
LOGGER.log(Level.INFO,"Получим первый элемент");
Integer integer = ints.get(0);
LOGGER.log(Level.INFO,"выведем его в консоль");
System.out.println(integer);
}catch (Exception e){
LOGGER.log(Level.WARNING,"что-то пошло не так" , e);
}
}
}
Bu iň gowy mysal däl, elimdäki birini aldym. Mysal üçin çykyş:
апр 19, 2019 1:10:14 AM generics.Main main
INFO: Начало main, создаем лист с типизацией Integers
апр 19, 2019 1:10:14 AM generics.Main main
INFO: присваиваем лист Integers листу без типипзации
апр 19, 2019 1:10:14 AM generics.Main main
INFO: присваиваем лист без типипзации листу строк
апр 19, 2019 1:10:14 AM generics.Main main
WARNING: добавляем строку "бла бла" в наш переприсвоенный лист, возможна ошибка
апр 19, 2019 1:10:14 AM generics.Main main
WARNING: добавляем строку "бла 23" в наш переприсвоенный лист, возможна ошибка
апр 19, 2019 1:10:14 AM generics.Main main
WARNING: добавляем строку "бла 34" в наш переприсвоенный лист, возможна ошибка
апр 19, 2019 1:10:14 AM generics.Main main
INFO: выводим все элементы листа с типизацией Integers в консоль
апр 19, 2019 1:10:14 AM generics.Main main
INFO: Размер equals 3
апр 19, 2019 1:10:14 AM generics.Main main
INFO: Получим первый элемент
апр 19, 2019 1:10:14 AM generics.Main main
WARNING: что-то пошло не так
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at generics.Main.main(Main.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Bu ýerde belliklere ünsi jemlemek isleýärin:
апр 19, 2019 1:10:14 AM generics.Main main
INFO: Размер equals 3
апр 19, 2019 1:10:14 AM generics.Main main
INFO: Получим первый элемент
Bu ýazgy gaty peýdasyz we maglumat beriji däl. Erroralňyşlyk ýazgysy ýaly:
WARNING: что-то пошло не так
Muny ýazmaly dälsiňiz: bu gündeligiň hatyrasyna bir ýazgy, ol diňe ýoldan çykar. Elmydama manyly zatlar ýazmaga synanyşyň. System.out.println
Muny ulanmagy bes etmek we ulular oýnawaçlaryna geçmek ýeterlikdir diýip pikir edýärin . Munuň java.util.logging
kemçilikleri bar. Mysal üçin, ýokarda beýan eden derejelerim bärde däl, ýöne iň köp ulanylýan ýazgylarda. Bu makala üçin saýladym, java.util.logging
sebäbi baglanyşyk bilen goşmaça manipulýasiýa talap etmeýär. Şeýle hem bu ýerde eýýäm peýda bolan kemçilikleriň biriniň LOGGER.info
ýerine ulanyp boljakdygyny belläp geçerin : - size habar we obýekt ibermäge mümkinçilik berýär , ýazgyçynyň özi ony owadan ýazar. Şol bir wagtyň özünde diňe habar alýar, ýagny Kadadan çykma mümkin däl, ony özüňiz bir setire terjime etmeli. Bu mysal Java ýazgylary bilen tanyşmak üçin ýeterlikdir diýip umyt edýärin. Soňra beýleki ýazgyçylary (log4j, slf4j, Logback ...) birikdirip bilersiňiz - olaryň köpüsi bar, ýöne manysy birmeňzeş ^ hereketleriň taryhyny ýazmak üçin. Resmi sapakLOGGER.log(Level.INFO...
LOGGER.log(Level.WARNING,"что-то пошло не так" , e);
Exception
LOGGER.warning("");
GO TO FULL VERSION