In uLogSimple1 you have the line "end." before the initialization section. Since the "." signals the end of the file the initialization part is never executed-
If you put the "end." after the finalization keyword you will notice other issues:
The program does not compile because "LogS.TLog.Create(...)" is not a valid syntax. Use "LogS := TLogS.Create(....)" instead.
Now the program compiles, but crashes in the same line. If you place a breakpoint in this line, run the program and move the mouse over the "AppData" used in the Create call you will see that AppData is nil. Obviously, because AppData has not yet been initialized. The order in which the code in the initialization section of several units is executed depends on several things: the order of units in the "uses" line, whether a unit uses another one. To be honest I never was able to predict this execution order in a larger project. Therefore - very important! - NEVER write code which depends on the order of execution of the initialization section. Putting the creation of objects into the initialization is such a case. Don't do this. Instead, if you really need these global objects, create them in the project file, for example. And don't forget to Free them (this could also be done in the project file).
[EDIT] Ahhh, molly was faster...