consolidate all repos to one for archive
This commit is contained in:
29
semester_2/programiranje_2/naloga1102/README.md
Normal file
29
semester_2/programiranje_2/naloga1102/README.md
Normal file
@@ -0,0 +1,29 @@
|
||||
Vzemite nalogo 11.1.
|
||||
|
||||
Kadar je koda v produkciji in želimo kasneje pregledati ali je med izvajanjem prišlo do napake, se poslužimo shranjevanja informacij o napakah v datoteko (angl. log file(https://en.wikipedia.org/wiki/Logging_(software))) . Pri tej nalogi bomo v ta namen naredili razred Log.
|
||||
|
||||
Primer:
|
||||
|
||||
int main() {
|
||||
Log(LogType::INFO) << "This is additional message. We can also put multiple << and other types, not just strings e.g. " << 5 << "\n" ;
|
||||
std::vector<std::shared_ptr<Student>> students = Student::LoadFromFile("students.csv");
|
||||
return 0;
|
||||
}
|
||||
|
||||
Znotraj datoteke log.txt:
|
||||
|
||||
[INFO] This is additional message. We can also put multiple << and other types, not just strings e.g. 5
|
||||
[ERROR] Unparseable date: "6.12.199a"!
|
||||
|
||||
Ustvarite enum class LogType z vrednostmi DEBUG, INFO, WARN in ERROR.
|
||||
Napišite razred Log, ki ima:
|
||||
razredno spremenljivko file (ofstream)
|
||||
konstantno razredno spremenljivko fileName (string), ki jo kar nastavite na log.txt
|
||||
razredno metodo GetStringLogType(LogType type), ki vrača string za podani LogType.
|
||||
konstruktor s parametrom type, ki je tipa LogType. Znotraj konstruktorja odprite datoteko in vanjo zapišite za kateri klic se je šlo, torej npr. Log(LogType::Error) bo v datoteko zapisalo [ERROR]. Pri tem uporabite razredno metodo GetStringLogType.
|
||||
destruktor, ki zapre datoteko
|
||||
prekrite operator <<, vendar naj bo Log &operator<<(const T &msg). Bodite pozorni na to, da lahko prejmemo sporočilo poljubnega tipa (torej gre za šablono). Znotraj te metode zapišemo v datoteko prejeto sporočilo. Na koncu vrnemo kazalec *this.
|
||||
Pri metodi LoadFromFile znotraj try-catch bloka, dodajte zapisovanje napake v datoteko v primeru napačnega formata datuma.
|
||||
Ustvarite še eno izjemo po lastni izbiri in jo uporabite na ustreznih mestih v vaši kodi. Primer naj bo smiseln.
|
||||
Poiščite še 3 smiselne primere za LogType, da bo v datoteko zapisalo [WARN].
|
||||
Demonstrirajte delovanje razreda Log in lastne izjeme.
|
||||
Reference in New Issue
Block a user