Commit 9510293f86d189f0c96969f91c3cb48ab5ed3e37

Authored by David RENÉ
1 parent 81ab652c

Create stand alone logger server. Change all call to log according to this

CXM_message_constants.anubis
... ... @@ -64,6 +64,8 @@ public define Word32 _CXM_FTP_DATA = 0x33771404.
64 64 public define Word32 _CXM_LOGGER_SERVICE_MSG_BASIS = 0x33771800. //
65 65 public define Word32 _CXM_LOGGER_SERVICE_ID = 0x33771801.
66 66 public define Word32 _CXM_LOGGER_LOG = 0x33771802.
  67 +public define Word32 _CXM_LOGGER_REGISTER_UID = 0x33771803.
  68 +public define Word32 _CXM_LOGGER_REGISTER_LOG = 0x33771804.
67 69  
68 70 // ************** DOMAIN SERVICE **************
69 71  
... ...
database/alter_table.anubis
... ... @@ -56,39 +56,39 @@ define One
56 56 ) =
57 57 if l is
58 58 {
59   - [] then print(" <<<\n"),
  59 + [] then print(" <<<\n"),
60 60 [h . t] then print(h + ", "); print_list(t)
61 61 }.
62 62  
63 63 define Maybe(One)
64 64 my_sql_query
65 65 (
66   - Database db,
67   - String sql,
68   - Logger log
  66 + Database db,
  67 + String sql,
  68 + (LogLevel, String) -> One log
69 69 ) =
70 70 if sql_query(db, sql) is
71 71 {
72   - error(sql_error) then logError(log, "SQL ERROR: " + sql_error.text + "\n ...executing query [" + sql + "]"); failure,
73   - ok(_,_,_) then success(unique)
  72 + error(sql_error) then log(logError, "SQL ERROR: " + sql_error.text + "\n ...executing query [" + sql + "]"); failure,
  73 + ok(_,_,_) then success(unique)
74 74 }.
75 75  
76 76 define Maybe(String)
77 77 get_original_query
78 78 (
79   - Database db,
80   - String dbName, // alias for attached database, 'main' for main database.
81   - DbEntityType object_type,
82   - String tableName,
83   - Logger log
  79 + Database db,
  80 + String dbName, // alias for attached database, 'main' for main database.
  81 + DbEntityType object_type,
  82 + String tableName,
  83 + (LogLevel, String) -> One log
84 84 ) =
85 85 if sql_query(db, "SELECT sql FROM " + dbName + ".sqlite_master where (type='"+to_String(object_type)+"') and tbl_name='" + tableName + "'") is
86 86 {
87   - error(sql_error) then logError(log, "alter_table/get_original_query ERROR '" + sql_error.text + "'"); failure,
88   - ok(_,table_cursor,_) then
  87 + error(sql_error) then log(logError, "alter_table/get_original_query ERROR '" + sql_error.text + "'"); failure,
  88 + ok(_,table_cursor,_) then
89 89 if table_cursor(unique) is
90 90 {
91   - error(sql_error) then logError(log, "alter_table/get_original_query ERROR '" + sql_error.text + "'"); failure,
  91 + error(sql_error) then log(logError, "alter_table/get_original_query ERROR '" + sql_error.text + "'"); failure,
92 92 no_more_row then failure, //can't find the table in sqlite_master, because the table is new
93 93 row(current) then success(text(current)(0))
94 94 }
... ... @@ -97,17 +97,17 @@ define Maybe(String)
97 97 define Bool
98 98 has_rows
99 99 (
100   - Database db,
101   - String tableName,
102   - Logger log
  100 + Database db,
  101 + String tableName,
  102 + (LogLevel, String) -> One log
103 103 ) =
104 104 if sql_query(db, "SELECT count(*) FROM " + tableName) is
105 105 {
106   - error(sql_error) then logError(log, "has_rows query ERROR '" + sql_error.text + "'"); false,
107   - ok(_,table_cursor,_) then
  106 + error(sql_error) then log(logError, "has_rows query ERROR '" + sql_error.text + "'"); false,
  107 + ok(_,table_cursor,_) then
108 108 if table_cursor(unique) is
109 109 {
110   - error(sql_error) then logError(log, "has_row run ERROR '" + sql_error.text + "'"); false,
  110 + error(sql_error) then log(logError, "has_row run ERROR '" + sql_error.text + "'"); false,
111 111 no_more_row then false,
112 112 row(current) then db_integer(current)(0) /= 0
113 113 }
... ... @@ -126,34 +126,34 @@ define List(String)
126 126 alter_table_extract_columns_list
127 127 (
128 128 SQLite3HeadersOrRow -> SQLite3Row table_cursor,
129   - Logger log
  129 + (LogLevel, String) -> One log
130 130 ) =
131 131 if table_cursor(headers) is
132 132 {
133   - error(sql_error) then logError(log, "alter_table_extract_columns_list ERROR '" + sql_error.text + "'"); [],
  133 + error(sql_error) then log(logError, "alter_table_extract_columns_list ERROR '" + sql_error.text + "'"); [],
134 134 no_more_row then [],
135   - row(headers) then alter_table_extract_columns_list_sub(headers, 0)
  135 + row(headers) then alter_table_extract_columns_list_sub(headers, 0)
136 136 }.
137 137  
138 138 define String
139 139 alter_table_extract_column_string
140 140 (
141   - One -> DbRow table_cursor,
142   - List(String) oldColumns,
143   - Logger log
  141 + One -> DbRow table_cursor,
  142 + List(String) oldColumns,
  143 + (LogLevel, String) -> One log
144 144 ) =
145 145 if table_cursor(unique) is
146 146 {
147   - error(sql_error) then logError(log, "alter_table_extract_columns_list ERROR '" + sql_error.text + "'"); "",
  147 + error(sql_error) then log(logError, "alter_table_extract_columns_list ERROR '" + sql_error.text + "'"); "",
148 148 no_more_row then /*logDebug(log, "Extract columns answers 'no more row'");*/ "",
149   - row(row) then
  149 + row(row) then
150 150 if row(1) is db_text(name) then
151   - with test = (String name2) |-> logDebug(log, "name: " + name + " / name2: " + name2); if name = name2 then true else false,
  151 + with test = (String name2) |-> log(logDebug, "name: " + name + " / name2: " + name2); if name = name2 then true else false,
152 152 colString = alter_table_extract_column_string(table_cursor, oldColumns, log),
153 153 if find_element(oldColumns, test) is
154 154 {
155   - failure then colString,
156   - success(_) then logDebug(log, "found: " + name);
  155 + failure then colString,
  156 + success(_) then log(logDebug, "found: " + name);
157 157 if is_empty(colString) then name else name + ", " + colString
158 158 }
159 159 else ""
... ... @@ -191,25 +191,25 @@ define Bool
191 191 public define Maybe(One)
192 192 alter_table
193 193 (
194   - Database db,
195   - String dbName, // alias for attached database, 'main' for main database.
196   - String tableName,
197   - String newTableQuery,
198   - Logger log
  194 + Database db,
  195 + String dbName, // alias for attached database, 'main' for main database.
  196 + String tableName,
  197 + String newTableQuery,
  198 + (LogLevel, String) -> One log
199 199 ) =
200 200 with fullTableName = dbName + "." + tableName,
201 201 if get_original_query(db, dbName, table, tableName, log) is
202 202 {
203 203 failure then
204   - logInfo(log, "Creating table '" + fullTableName + "'... ");
  204 + log(logInfo, "Creating table '" + fullTableName + "'... ");
205 205 if sql_query(db, newTableQuery) is error(sql_error)
206   - then logError(log, "ERROR : " + sql_error.text); failure
207   - else logInfo(log, " --> ok."); success(unique),
  206 + then log(logError, "ERROR : " + sql_error.text); failure
  207 + else log(logInfo, " --> ok."); success(unique),
208 208 success(originalTableQuery) then
209 209 if compare_creation_queries(tableName, originalTableQuery, newTableQuery) = false then
210   - logInfo(log, "Updating table '" + fullTableName + "' on database... ");
211   - println(originalTableQuery);
212   - println(newTableQuery);
  210 + log(logInfo, "Updating table '" + fullTableName + "' on database... ");
  211 + log(logDebug, originalTableQuery);
  212 + log(logDebug, newTableQuery);
213 213 if has_rows(db, fullTableName, log) is
214 214 {
215 215 false then
... ... @@ -217,8 +217,8 @@ public define Maybe(One)
217 217 then failure
218 218 else if my_sql_query(db, newTableQuery, log ) is
219 219 {
220   - failure then failure,
221   - success(_) then logInfo(log, " --> ok."); success(unique)
  220 + failure then failure,
  221 + success(_) then log(logInfo, " --> ok."); success(unique)
222 222 },
223 223 true then
224 224 with tempNameTable = tableName + "_temp",
... ... @@ -229,20 +229,20 @@ public define Maybe(One)
229 229 if my_sql_query(db, newTableQuery , log) is failure then failure else
230 230 if sql_query(db, "SELECT * FROM " + tempNameTable) is
231 231 {
232   - error(sql_error) then logError(log, "alter_table: select * tempTable ERROR '" + sql_error.text + "'"); failure,
233   - ok(get_cols,table_cursor2,_) then
  232 + error(sql_error) then log(logError, "alter_table: select * tempTable ERROR '" + sql_error.text + "'"); failure,
  233 + ok(get_cols,table_cursor2,_) then
234 234 with oldColumns = get_cols(unique),
235 235 //print_list(oldColumns);
236 236 if sql_query(db, "PRAGMA " + dbName + ".table_info(" + tableName + ")") is
237 237 {
238   - error(sql_error) then logError(log, "alter_table: pragma table_info() ERROR '" + sql_error.text + "'"); failure,
  238 + error(sql_error) then log(logError, "alter_table: pragma table_info() ERROR '" + sql_error.text + "'"); failure,
239 239 ok(_,table_cursor3,_) then
240 240 with newColumnsStr = alter_table_extract_column_string(table_cursor3, oldColumns, log),
241 241 sql = "INSERT INTO " + fullTableName + " (" + newColumnsStr + ") SELECT " + newColumnsStr + " FROM " + tempNameTable,
242 242 if sql_query(db, sql) is
243 243 {
244   - error(sql_error) then logError(log, "alter_table ERROR '" + sql_error.text + "'\n\tquery = [" + sql + "]"); failure,
245   - ok(_,_,_) then logInfo(log, " --> ok."); success(unique)
  244 + error(sql_error) then log(logError, "alter_table ERROR '" + sql_error.text + "'\n\tquery = [" + sql + "]"); failure,
  245 + ok(_,_,_) then log(logInfo, " --> ok."); success(unique)
246 246 }
247 247 }
248 248 },
... ... @@ -257,10 +257,10 @@ public define Maybe(One)
257 257 public define Maybe(One)
258 258 alter_table
259 259 (
260   - Database db,
261   - String tableName,
262   - String newTableQuery,
263   - Logger log
  260 + Database db,
  261 + String tableName,
  262 + String newTableQuery,
  263 + (LogLevel, String) -> One log
264 264 ) =
265 265 alter_table(db, "main", tableName, newTableQuery, log).
266 266  
... ... @@ -268,31 +268,31 @@ public define Maybe(One)
268 268 public define Maybe(One)
269 269 alter_view
270 270 (
271   - Database db,
272   - String dbName, // alias for attached database, 'main' for main database.
273   - String viewName,
274   - String newViewQuery,
275   - Logger log
  271 + Database db,
  272 + String dbName, // alias for attached database, 'main' for main database.
  273 + String viewName,
  274 + String newViewQuery,
  275 + (LogLevel, String) -> One log
276 276 ) =
277 277 with fullViewName = dbName + "." + viewName,
278 278 if get_original_query(db, dbName, view, viewName, log) is
279 279 {
280 280 failure then
281   - logInfo(log, "Creating view '" + fullViewName + "'... ");
  281 + log(logInfo, "Creating view '" + fullViewName + "'... ");
282 282 if sql_query(db, newViewQuery) is error(sql_error)
283   - then logError(log, "ERROR : " + sql_error.text); failure
284   - else logInfo(log, " --> ok."); success(unique),
  283 + then log(logError, "ERROR : " + sql_error.text); failure
  284 + else log(logInfo, " --> ok."); success(unique),
285 285 success(originalViewQuery) then
286 286 if compare_creation_queries(viewName, originalViewQuery, newViewQuery) = false then
287   - logInfo(log, "Updating view '" + fullViewName + "' on database... ");
288   - println(originalViewQuery);
289   - println(newViewQuery);
  287 + log(logInfo, "Updating view '" + fullViewName + "' on database... ");
  288 + log(logDebug, originalViewQuery);
  289 + log(logDebug, newViewQuery);
290 290 if my_sql_query(db, "DROP VIEW " + fullViewName, log) is failure
291 291 then failure
292 292 else if my_sql_query(db, newViewQuery, log ) is
293 293 {
294   - failure then failure,
295   - success(_) then logInfo(log, " --> ok."); success(unique)
  294 + failure then failure,
  295 + success(_) then log(logInfo, " --> ok."); success(unique)
296 296 }
297 297 else
298 298 success(unique)
... ... @@ -301,10 +301,10 @@ public define Maybe(One)
301 301 public define Maybe(One)
302 302 alter_view
303 303 (
304   - Database db,
305   - String viewName,
306   - String newViewQuery,
307   - Logger log
  304 + Database db,
  305 + String viewName,
  306 + String newViewQuery,
  307 + (LogLevel, String) -> One log
308 308 ) =
309 309 alter_view(db, "main", viewName, newViewQuery, log).
310 310  
... ...
database/db_types.anubis
... ... @@ -216,6 +216,15 @@ public define String
216 216 .
217 217  
218 218 public define String
  219 + get_time
  220 + (
  221 + DB_datetime dt
  222 + )=
  223 + with ba_dt = to_byte_array(dt.datetime),
  224 + to_string(extract(ba_dt, 11, 19))
  225 +.
  226 +
  227 +public define String
219 228 to_String
220 229 (
221 230 DB_time t
... ...
database/db_utils.anubis
... ... @@ -18,7 +18,7 @@ transmit calexium_lib/database/db_utils.anubis
18 18 transmit calexium_lib/database/db_binds.anubis
19 19 transmit calexium_lib/database/db_update_fields.anubis
20 20  
21   -read calexium_lib/net_services_protocols/logger_service.anubis
  21 +read calexium_lib/net_services_protocols/logger_client.anubis
22 22  
23 23 public define Int one_year_seconds = 365 * 86400. // amount of seconds during 1 year
24 24 // public define Int one_month_seconds = 31 * 86400.
... ... @@ -41,7 +41,7 @@ define One
41 41 ) =
42 42 with t = unow - t0,
43 43 if t.seconds > 0 then
44   - logTrace("SQL", logMask("sql_profiling"), "[SQL LONG QUERY] " + __utime_to_string(t) + " from ("+msg+") executing [" + sql_query + "]")
  44 + logTrace("", "SQL", logMask("sql_profiling"), "[SQL LONG QUERY] " + __utime_to_string(t) + " from ("+msg+") executing [" + sql_query + "]")
45 45 else
46 46 unique.
47 47  
... ... @@ -52,7 +52,7 @@ define One
52 52 String sql_query,
53 53 String msg
54 54 ) =
55   - logTrace("SQL_TRACE", logMask("sql_trace"), "[SQL] " + __utime_to_string(unow - t0) + " from ("+msg+") executing [" + sql_query + "]").
  55 + logTrace("", "SQL_TRACE", logMask("sql_trace"), "[SQL] " + __utime_to_string(unow - t0) + " from ("+msg+") executing [" + sql_query + "]").
56 56  
57 57 public define Result(DbError, One)
58 58 sql_transaction
... ... @@ -68,10 +68,10 @@ public define Result(DbError, One)
68 68 (One _) |->
69 69 if db_query(db, sql_command) is
70 70 {
71   - error(err) then logError("DB", db_error(err,message));failure //error in the SQL request
  71 + error(err) then logError("", "DB", db_error(err,message));failure //error in the SQL request
72 72 ok(_,cursor,_) then success(unique)
73 73 },
74   - success( (DbError err) |-> logError("DB", db_error(err,message))),
  74 + success( (DbError err) |-> logError("", "DB", db_error(err,message))),
75 75 600000, // max 600s
76 76 200, // retry every 100 ms
77 77 (DbError _) |-> false
... ... @@ -101,7 +101,7 @@ public define DbQueryResult
101 101 with t0 = unow,
102 102 if sql_query_timeout(db, sql_query, initial_bindings, 60, 100, (DbError _) |-> false) is
103 103 {
104   - error(sql_error) then logError("DB", db_error(sql_error,msg) + " executing [" + sql_query + "]");
  104 + error(sql_error) then logError("", "DB", db_error(sql_error,msg) + " executing [" + sql_query + "]");
105 105 __logLongQueries(t0, sql_query, msg);
106 106 error(sql_error),
107 107 ok(headers, cursor, reset) then
... ... @@ -146,7 +146,7 @@ public define SQLite3QueryResult
146 146 if sql_query_timeout(db, sql_query, initial_bindings, 120, 100) is
147 147 {
148 148 error(sql_error) then
149   - logError("DB", db_error(sql_error,msg) /*+ " executing [" + sql_query + "]"*/);
  149 + logError("", "DB", db_error(sql_error,msg) /*+ " executing [" + sql_query + "]"*/);
150 150 //println(" executing [" + sql_query + "]");
151 151 __logQueries(t0, "[sql_query_timeout Error] "+sql_query, msg);
152 152 __logLongQueries(t0, sql_query, msg);
... ... @@ -179,7 +179,7 @@ public define SQLite3Row
179 179 if sql_query_statement_timeout(sql_command_stmt, initial_bindings, 120, 100, msg) is
180 180 {
181 181 error(sql_error) then
182   - logError("DB", db_error(sql_error,msg) /*+ " executing [" + sql_query + "]"*/);
  182 + logError("", "DB", db_error(sql_error,msg) /*+ " executing [" + sql_query + "]"*/);
183 183 //println(" executing [" + sql_command_stmt + "]");
184 184 __logQueries(t0, "[sql_query_statement_timeout Error]", msg);
185 185 __logLongQueries(t0, "stmt", msg);
... ... @@ -204,7 +204,7 @@ public define String
204 204 ) =
205 205 if table_cursor(unique) is
206 206 {
207   - error(sql_error) then logError("DB", db_error(sql_error, "db_get_String")); "",
  207 + error(sql_error) then logError("", "DB", db_error(sql_error, "db_get_String")); "",
208 208 no_more_row then "", //can't find the symbol in the table, because the row is empty
209 209 row(explorer) then text(explorer)(0)
210 210 }.
... ... @@ -217,7 +217,7 @@ public define List(String)
217 217 ) =
218 218 if table_cursor(unique) is
219 219 {
220   - error(sql_error) then logError("DB", db_error(sql_error, "db_get_string_list")); reverse(so_far),
  220 + error(sql_error) then logError("", "DB", db_error(sql_error, "db_get_string_list")); reverse(so_far),
221 221 no_more_row then reverse(so_far), //can't find the symbol in the table, because the row is empty
222 222 row(explorer) then
223 223 with s = text(explorer)(0),
... ... @@ -233,7 +233,7 @@ public define List(String)
233 233 ) =
234 234 if table_cursor(unique) is
235 235 {
236   - error(sql_error) then logError("DB", db_error(sql_error, "db_get_string_list")); reverse(so_far),
  236 + error(sql_error) then logError("", "DB", db_error(sql_error, "db_get_string_list")); reverse(so_far),
237 237 no_more_row then reverse(so_far), //can't find the symbol in the table, because the row is empty
238 238 row(explorer) then
239 239 with s = text(explorer)(0),
... ... @@ -248,7 +248,7 @@ public define List(String)
248 248 ) =
249 249 if table_cursor(unique) is
250 250 {
251   - error(sql_error) then logError("DB", db_error(sql_error, "db_get_string_list")); [],
  251 + error(sql_error) then logError("", "DB", db_error(sql_error, "db_get_string_list")); [],
252 252 no_more_row then [], //can't find the symbol in the table, because the row is empty
253 253 row(explorer) then
254 254 with s = text(explorer)(0),
... ... @@ -263,7 +263,7 @@ public define Int
263 263 ) =
264 264 if table_cursor(unique) is
265 265 {
266   - error(sql_error) then logError("DB", db_error(sql_error, "db_get_integer")); 0,
  266 + error(sql_error) then logError("", "DB", db_error(sql_error, "db_get_integer")); 0,
267 267 no_more_row then 0,
268 268 row(explorer) then (Int)db_integer(explorer)(0)
269 269 }.
... ... @@ -275,7 +275,7 @@ public define Maybe(Int)
275 275 ) =
276 276 if table_cursor(unique) is
277 277 {
278   - error(sql_error) then logError("DB", db_error(sql_error, "db_get_mb_integer")); failure,
  278 + error(sql_error) then logError("", "DB", db_error(sql_error, "db_get_mb_integer")); failure,
279 279 no_more_row then failure,
280 280 row(explorer) then db_integer(explorer)(0)
281 281 }.
... ... @@ -289,7 +289,7 @@ public define List(Int)
289 289 ) =
290 290 if table_cursor(unique) is
291 291 {
292   - error(sql_error) then logError("DB", db_error(sql_error, "db_get_integer_list")); reverse(so_far),
  292 + error(sql_error) then logError("", "DB", db_error(sql_error, "db_get_integer_list")); reverse(so_far),
293 293 no_more_row then reverse(so_far), //can't find the symbol in the table, because the row is empty
294 294 row(explorer) then
295 295 with s = (Int)db_integer(explorer)(0),
... ... @@ -311,7 +311,7 @@ public define Float
311 311 ) =
312 312 if table_cursor(unique) is
313 313 {
314   - error(sql_error) then logError("DB", db_error(sql_error, "db_get_Float")); 0.0,
  314 + error(sql_error) then logError("", "DB", db_error(sql_error, "db_get_Float")); 0.0,
315 315 no_more_row then 0.0,
316 316 row(explorer) then db_float(explorer)(0)
317 317 }.
... ... @@ -324,7 +324,7 @@ public define List(Int)
324 324 ) =
325 325 if table_cursor(unique) is
326 326 {
327   - error(sql_error) then logError("DB", db_error(sql_error, "db_get_integer_list")); reverse(so_far),
  327 + error(sql_error) then logError("", "DB", db_error(sql_error, "db_get_integer_list")); reverse(so_far),
328 328 no_more_row then reverse(so_far), //can't find the symbol in the table, because the row is empty
329 329 row(explorer) then
330 330 with s = (Int)db_integer(explorer)(0),
... ...
database/migration_common_sqlite3.anubis
... ... @@ -14,7 +14,7 @@ read data_base/db_types.anubis //FK...
14 14 read data_base/sqlite_foreign_key.anubis
15 15  
16 16 read calexium_lib/database/db_utils.anubis
17   -read calexium_lib/net_services_protocols/logger_service.anubis
  17 +//read calexium_lib/net_services_protocols/logger_service.anubis
18 18 transmit db_version.anubis
19 19  
20 20 public type DbTable:
... ... @@ -78,16 +78,16 @@ public define Bool
78 78 public define Maybe(One)
79 79 drop_all_triggers
80 80 (
81   - SQLite3DataBase db,
82   - Logger log
  81 + SQLite3DataBase db,
  82 + (LogLevel, String) -> One log
83 83 ) =
84 84 if sqlite3_query(db, "SELECT name FROM sqlite_master WHERE type = 'trigger'", []) is
85 85 {
86   - error(err) then logError(log, db_error(err, "drop_all_triggers")); failure,
87   - ok(_, cursor, _) then
  86 + error(err) then log(logError, db_error(err, "drop_all_triggers")); failure,
  87 + ok(_, cursor, _) then
88 88 with drop_trigger = (String name) |-> if sqlite3_query(db, "DROP TRIGGER " + name, []) is
89 89 {
90   - error(err2) then logError(log, db_error(err2, "Failed to drop trigger '" + name + "'")),
  90 + error(err2) then log(logError, db_error(err2, "Failed to drop trigger '" + name + "'")),
91 91 ok(_, cursor, _) then unique
92 92 },
93 93 map_forget(drop_trigger, db_get_string_list(cursor, []));
... ... @@ -97,10 +97,10 @@ public define Maybe(One)
97 97 public define Maybe(One)
98 98 create_tables
99 99 (
100   - SQLite3DataBase db,
101   - Logger logger,
102   - List(DbTable) tables,
103   - String version_string
  100 + SQLite3DataBase db,
  101 + (LogLevel, String) -> One logger,
  102 + List(DbTable) tables,
  103 + String version_string
104 104 ) =
105 105 if tables is
106 106 {
... ... @@ -111,19 +111,19 @@ public define Maybe(One)
111 111 table(table_name, create_string) then
112 112 if alter_table(db, table_name, create_string, logger) is
113 113 {
114   - failure then logError(logger, "Version "+version_string+": Can't create '"+table_name+"' table"); failure,
  114 + failure then logger(logError, "Version "+version_string+": Can't create '"+table_name+"' table"); failure,
115 115 success(_) then create_tables(db, logger, t, version_string)
116 116 },
117 117 table(db_name, table_name, create_string) then
118 118 if alter_table(db, db_name, table_name, create_string, logger) is
119 119 {
120   - failure then logError(logger, "Version "+version_string+": Can't create '"+db_name+"."+table_name+"' table"); failure,
  120 + failure then logger(logError, "Version "+version_string+": Can't create '"+db_name+"."+table_name+"' table"); failure,
121 121 success(_) then create_tables(db, logger, t, version_string)
122 122 },
123 123 view(view_name, create_string) then
124 124 if alter_view(db, view_name, create_string, logger) is
125 125 {
126   - failure then logError(logger, "Version "+version_string+": Can't create '"+view_name+"' view"); failure,
  126 + failure then logger(logError, "Version "+version_string+": Can't create '"+view_name+"' view"); failure,
127 127 success(_) then create_tables(db, logger, t, version_string)
128 128 },
129 129 }
... ... @@ -133,10 +133,10 @@ public define Maybe(One)
133 133 public define Maybe(One)
134 134 create_indexes
135 135 (
136   - SQLite3DataBase db,
137   - Logger logger,
138   - List(String) indexes,
139   - String version_string
  136 + SQLite3DataBase db,
  137 + (LogLevel, String) -> One logger,
  138 + List(String) indexes,
  139 + String version_string
140 140 )=
141 141 if indexes is
142 142 {
... ... @@ -153,19 +153,19 @@ public define Maybe(One)
153 153 public define One
154 154 make_foreign_key
155 155 (
156   - SQLite3DataBase db,
157   - String table_name,
158   - String field_name,
159   - String foreign_table_name,
160   - String foreign_field_name,
161   - Bool fk_null,
162   - Bool fk_cascade,
163   - Logger log
  156 + SQLite3DataBase db,
  157 + String table_name,
  158 + String field_name,
  159 + String foreign_table_name,
  160 + String foreign_field_name,
  161 + Bool fk_null,
  162 + Bool fk_cascade,
  163 + (LogLevel, String) -> One log
164 164 ) =
165 165 if (Maybe(One))make_foreign_key(db, table_name, field_name, foreign_table_name, foreign_field_name, fk_null, fk_cascade, log) is
166 166 {
167 167 failure then
168   - logError(log, "Can't create foreign key constraint between '"+table_name+"' and '"+foreign_table_name+"' tables"),
  168 + log(logError, "Can't create foreign key constraint between '"+table_name+"' and '"+foreign_table_name+"' tables"),
169 169 success(_) then
170 170 unique
171 171 }.
... ... @@ -173,20 +173,20 @@ public define One
173 173 public define Maybe(One)
174 174 make_foreign_keys
175 175 (
176   - SQLite3DataBase db,
177   - Logger logger,
  176 + SQLite3DataBase db,
  177 + (LogLevel, String) -> One logger,
178 178 List((String, String, String, String, FK_Null, FK_Cascade)) relations,
179   - String version_string
  179 + String version_string
180 180 )=
181 181 if relations is
182 182 {
183   - [] then success(unique),
  183 + [] then success(unique),
184 184 [h . t] then
185 185 if h is (table_name, field_name, foreign_table_name, foreign_field_name, fk_null, fk_cascade) then
186 186 if (Maybe(One))make_foreign_key(db, table_name, field_name, foreign_table_name, foreign_field_name, fk_null, fk_cascade, logger) is
187 187 {
188 188 failure then
189   - logError(logger, "Version "+version_string+": Can't create foreign key constraint between '"+table_name+"' and '"+foreign_table_name+"' tables"); failure,
  189 + logger(logError, "Version "+version_string+": Can't create foreign key constraint between '"+table_name+"' and '"+foreign_table_name+"' tables"); failure,
190 190 success(_) then
191 191 make_foreign_keys(db, logger, t, version_string)
192 192 }
... ...
database/migration_sqlite3.anubis
... ... @@ -13,16 +13,16 @@ read system/string.anubis
13 13 read data_base/sqlite.anubis
14 14 read calexium_lib/database/alter_table.anubis
15 15 read calexium_lib/database/db_utils.anubis
16   -read calexium_lib/net_services_protocols/logger_service.anubis
  16 +//read calexium_lib/net_services_protocols/logger_client.anubis
17 17 read calexium_lib/types/version.anubis
18 18  
19 19 read migration_common_sqlite3.anubis
20 20  
21 21 public type Migration:
22 22 migration(DB_Version version,
23   - (SQLite3DataBase, Logger) -> Maybe(One) migrate_to,
24   - (SQLite3DataBase, Logger) -> Maybe(One) create_tables,
25   - (SQLite3DataBase, Logger) -> Maybe(One) create_indexes,
  23 + (SQLite3DataBase, (LogLevel, String) -> One) -> Maybe(One) migrate_to,
  24 + (SQLite3DataBase, (LogLevel, String) -> One) -> Maybe(One) create_tables,
  25 + (SQLite3DataBase, (LogLevel, String) -> One) -> Maybe(One) create_indexes,
26 26 ).
27 27  
28 28  
... ... @@ -41,7 +41,7 @@ public define Bool
41 41 public define Maybe(One)
42 42 backup_database
43 43 (
44   - Logger logger,
  44 + (LogLevel, String) -> One logger,
45 45 // String current_version,
46 46 String db_path,
47 47 String main_db_name,
... ... @@ -62,18 +62,18 @@ public define Maybe(One)
62 62 with dir_save = db_path + dir_save_database,
63 63 if (Maybe(String))make_directory(dir_save) is
64 64 {
65   - failure then logError(logger, "Can't create directory '"+db_path + dir_save_database+"'"); failure,
  65 + failure then logger(logError, "Can't create directory '"+db_path + dir_save_database+"'"); failure,
66 66 success(_) then
67 67 with copy_with_log = (String src, String dst) |->
68 68 if file_exists(src) then
69 69 if copy_file(src, dst) is
70 70 {
71   - cant_read_file then logError(logger, "Can't read source file '" + src + "'."); failure,
72   - cant_create_file then logError(logger, "Can't create destination file '" + dst + "'."); failure,
73   - copy_error then logError(logger, "Can't copy file '" + src + "' to file '" + dst + "'."); failure,
74   - copy_file_mode_error then logError(logger, "Can't get file mode for source file '" + src + "'."); failure,
75   - copy_file_times_error then logError(logger, "Can't set file times into file '" + dst + "'."); failure,
76   - copy_ok(_) then logInfo(logger, "File '" + dst + "' saved"); success(unique)
  71 + cant_read_file then logger(logError, "Can't read source file '" + src + "'."); failure,
  72 + cant_create_file then logger(logError, "Can't create destination file '" + dst + "'."); failure,
  73 + copy_error then logger(logError, "Can't copy file '" + src + "' to file '" + dst + "'."); failure,
  74 + copy_file_mode_error then logger(logError, "Can't get file mode for source file '" + src + "'."); failure,
  75 + copy_file_times_error then logger(logError, "Can't set file times into file '" + dst + "'."); failure,
  76 + copy_ok(_) then logger(logInfo, "File '" + dst + "' saved"); success(unique)
77 77 }
78 78 else success(unique),
79 79 with copy_db = (List(String) names) |-copy_db->
... ... @@ -95,7 +95,7 @@ public define Maybe(One)
95 95 public define Maybe(One)
96 96 backup_database
97 97 (
98   - Logger logger,
  98 + (LogLevel, String) -> One logger,
99 99 SQLite3DataBase db,
100 100 String db_path,
101 101 String main_db_name
... ... @@ -105,7 +105,7 @@ public define Maybe(One)
105 105 with v3_27 = version(3,27,0,0),
106 106 with sqlite_version = if sql_query_timeout(db, "SELECT sqlite_version();", "backup_database get version") is
107 107 {
108   - error(_) then logError(logger, "Can't get sqlite version for backup");failure,
  108 + error(_) then logger(logError, "Can't get sqlite version for backup");failure,
109 109 ok(_, cursor, _) then
110 110 with sqlite_version_str = db_get_String(cursor),
111 111 to_Version(sqlite_version_str)
... ... @@ -113,24 +113,24 @@ public define Maybe(One)
113 113  
114 114 if sqlite_version is
115 115 {
116   - failure then logError(logger, "Can't get sqlite version for backup ");failure,
  116 + failure then logger(logError, "Can't get sqlite version for backup ");failure,
117 117 success(sqlite_v) then
118 118 //if the SQLite engine version is < 3.27 we use old method for backup
119 119 if sqlite_v.numeric +< v3_27.numeric then
120   - logWarning(logger, "The current SQLite engine v"+sqlite_v+" doesn't support vaccum into. Fallback to previous method");
  120 + logger(logWarning, "The current SQLite engine v"+sqlite_v+" doesn't support vaccum into. Fallback to previous method");
121 121 backup_database(logger, db_path, main_db_name, [])
122 122 else
123 123 //construct the target folder for backup
124 124 with dir_save = db_path + dir_save_database,
125 125 if (Maybe(String))make_directory(dir_save) is
126 126 {
127   - failure then logError(logger, "Can't create directory '"+db_path + dir_save_database+"'"); failure,
  127 + failure then logger(logError, "Can't create directory '"+db_path + dir_save_database+"'"); failure,
128 128 success(_) then
129 129 with filename = db_path + dir_save_database+get_current_datetime_condensed+"-"+main_db_name,
130 130 if sql_query(db, "VACUUM INTO '"+filename+"';") is
131 131 {
132   - error(err) then logError(logger,db_error(err, "Can't backup database into "+filename));failure,
133   - ok(_,) then logInfo(logger, "database backuped into "+filename);success(unique)
  132 + error(err) then logger(logError,db_error(err, "Can't backup database into "+filename));failure,
  133 + ok(_,) then logger(logInfo, "database backuped into "+filename);success(unique)
134 134 }
135 135 }
136 136 }
... ... @@ -210,7 +210,7 @@ define Maybe(One)
210 210 do_table_indexes
211 211 (
212 212 SQLite3DataBase db,
213   - Logger logger,
  213 + (LogLevel, String) -> One logger,
214 214 Migration _migration,
215 215 (DB_Version) -> One update_db_version
216 216 )=
... ... @@ -229,12 +229,12 @@ define Maybe(One)
229 229 define Maybe(One)
230 230 do_migration_loop
231 231 (
232   - SQLite3DataBase db,
233   - Logger logger,
  232 + SQLite3DataBase db,
  233 + (LogLevel, String) -> One logger,
234 234 // String current_version, //current version of app
235   - DB_Version db_ver, //version found in db settings
236   - List(Migration) migrations,
237   - (DB_Version) -> One update_db_version,
  235 + DB_Version db_ver, //version found in db settings
  236 + List(Migration) migrations,
  237 + (DB_Version) -> One update_db_version,
238 238 ) =
239 239 if migrations is
240 240 {
... ... @@ -245,7 +245,7 @@ define Maybe(One)
245 245 if compare_db_version(db_ver, migration_version) is
246 246 {
247 247 less then
248   - logInfo(logger, "[less] Migrating Database from version " + db_ver + " to version " + migration_version);
  248 + logger(logInfo, "[less] Migrating Database from version " + db_ver + " to version " + migration_version);
249 249 if migrate_to(db, logger) is failure then
250 250 failure
251 251 else
... ... @@ -253,15 +253,15 @@ define Maybe(One)
253 253 do_migration_loop(db, logger, migration_version, t, update_db_version)
254 254  
255 255 more then
256   - logInfo(logger, "[more] No Database migration found from version " + db_ver + " to version " + migration_version);
  256 + logger(logInfo, "[more] No Database migration found from version " + db_ver + " to version " + migration_version);
257 257 do_migration_loop(db, logger, db_ver, t, update_db_version)
258 258  
259 259 equal then
260   - logInfo(logger, "[equal] No Database migration found from version " + db_ver + " to version " + migration_version);
  260 + logger(logInfo, "[equal] No Database migration found from version " + db_ver + " to version " + migration_version);
261 261 do_migration_loop(db, logger, db_ver, t, update_db_version)
262 262  
263 263 equal_but_sign then
264   - logInfo(logger, "Database migration found from version " + db_ver + " to version " + migration_version+ " by hash difference ");
  264 + logger(logInfo, "Database migration found from version " + db_ver + " to version " + migration_version+ " by hash difference ");
265 265 if migrate_to(db, logger) is failure then
266 266 failure
267 267 else
... ... @@ -273,18 +273,18 @@ define Maybe(One)
273 273 public define Maybe(One)
274 274 do_migration
275 275 (
276   - SQLite3DataBase db,
277   - Logger logger,
278   - DB_Version current_db_version,
279   - (DB_Version) -> One update_db_version,
280   - List(Migration) all_migrations,
  276 + SQLite3DataBase db,
  277 + (LogLevel, String) -> One logger,
  278 + DB_Version current_db_version,
  279 + (DB_Version) -> One update_db_version,
  280 + List(Migration) all_migrations,
281 281 )=
282 282 if is_empty_database(db) then // new empty database
283   - logInfo(logger, "No database found. Creating a new one...");
  283 + logger(logInfo, "No database found. Creating a new one...");
284 284 if last(all_migrations) is success(migration) then
285 285 do_table_indexes(db, logger, migration, update_db_version)
286 286 else
287   - logError(logger, "No database migration found. Can't create Database");
  287 + logger(logError, "No database migration found. Can't create Database");
288 288 failure
289 289 else
290 290 (
... ... @@ -301,12 +301,12 @@ public define Maybe(One)
301 301 do_create_indexes
302 302 (
303 303 SQLite3DataBase db,
304   - Logger logger,
  304 + (LogLevel, String) -> One logger,
305 305 List(Migration) all_migrations,
306 306 )=
307 307 if last(all_migrations) is
308 308 {
309   - failure then logCriticalError(logger, "Index creation: migration list is empty!"); failure,
  309 + failure then logger(logCriticalError, "Index creation: migration list is empty!"); failure,
310 310 success(last_migration) then
311 311 if last_migration is migration(_, _, _, create_indexes) then
312 312 if create_indexes(db, logger) is success(_) then
... ...
database/sqlite_foreign_key.anubis
... ... @@ -24,41 +24,41 @@ read data_base/db_types.anubis
24 24 define Maybe(One)
25 25 my_sql_query
26 26 (
27   - Database db,
28   - String sql,
29   - Logger log
  27 + Database db,
  28 + String sql,
  29 + (LogLevel, String) -> One log
30 30 ) =
31 31 if sql_query(db, sql) is
32 32 {
33   - error(sql_error) then logError(log, "SQL ERROR: " + sql_error.text + "\n ...executing query [" + sql + "]"); failure,
34   - ok(_,_,_) then success(unique)
  33 + error(sql_error) then log(logError, "SQL ERROR: " + sql_error.text + "\n ...executing query [" + sql + "]"); failure,
  34 + ok(_,_,_) then success(unique)
35 35 }.
36 36  
37 37 public define Maybe(One)
38 38 alter_trigger
39 39 (
40   - Database db,
41   - String trigger_name,
42   - String sql,
43   - Logger log
  40 + Database db,
  41 + String trigger_name,
  42 + String sql,
  43 + (LogLevel, String) -> One log
44 44 ) =
45 45 if sql_query(db, "SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = " + db_make_sql_string(trigger_name)) is
46 46 {
47   - error(sql_error) then logError(log, "SQL ERROR: " + sql_error.text + "\n ...looking for trigger named [" + trigger_name + "]"); failure,
48   - ok(_,cursor,_) then
  47 + error(sql_error) then log(logError, "SQL ERROR: " + sql_error.text + "\n ...looking for trigger named [" + trigger_name + "]"); failure,
  48 + ok(_,cursor,_) then
49 49 if cursor(unique) is
50 50 {
51   - error(sql_error) then logError(log, "alter_trigger ERROR '" + sql_error.text + "'"); failure,
  51 + error(sql_error) then log(logError, "alter_trigger ERROR '" + sql_error.text + "'"); failure,
52 52 no_more_row then my_sql_query(db, sql, log),
53 53 row(current) then
54 54 with old_sql = text(current)(0),
55 55 if old_sql /= sql then
56   - logDebug(log, "Old trigger was:\n" + old_sql + "\n");
57   - logDebug(log, "New trigger is:\n" + sql + "\n");
58   - logInfo(log, "Updating trigger '" + trigger_name + "'...");
  56 + log(logDebug, "Old trigger was:\n" + old_sql + "\n");
  57 + log(logDebug, "New trigger is:\n" + sql + "\n");
  58 + log(logInfo, "Updating trigger '" + trigger_name + "'...");
59 59 forget(my_sql_query(db, "DROP TRIGGER [" + trigger_name + "]", log));
60   - if my_sql_query(db, sql, log) is success(_) then logInfo (log, " --> ok."); success(unique)
61   - else logError(log, " --> error!"); failure
  60 + if my_sql_query(db, sql, log) is success(_) then log(logInfo, " --> ok."); success(unique)
  61 + else log(logError, " --> error!"); failure
62 62 else
63 63 success(unique)
64 64 }
... ... @@ -76,7 +76,7 @@ public define Maybe(One)
76 76 String foreign_field_name,
77 77 FK_Null fk_null,
78 78 FK_Cascade fk_cascade,
79   - Logger log
  79 + (LogLevel, String) -> One log
80 80 ) =
81 81 with constrait_name = table_name + "__" + field_name + "__" + foreign_table_name,
82 82 sql_create =
... ... @@ -128,7 +128,7 @@ public define Maybe(One)
128 128 String foreign_field_name,
129 129 Bool field_can_be_null,
130 130 Bool delete, //delete_in_cascade ?
131   - Logger log
  131 + (LogLevel, String) -> One log
132 132 ) =
133 133 make_foreign_key
134 134 (
... ...
examples/minimal_web_site_vc.anubis
... ... @@ -4,7 +4,7 @@
4 4  
5 5 *Title* A minimal web site.
6 6  
7   - *Copyright* Copyright © David RENÉwww.calexium.com.
  7 + *Copyright* Copyright © David RENÉ.
8 8  
9 9 *Released*
10 10  
... ...
mail/compose_email.anubis
... ... @@ -14,7 +14,7 @@ read system/string.anubis
14 14 read system/logger.anubis
15 15 read system/data_io.anubis
16 16 read web/mime.anubis
17   -read calexium_lib/net_services_protocols/logger_service.anubis
  17 +//read calexium_lib/net_services_protocols/logger_service.anubis
18 18 read calexium_lib/mail/tools.anubis
19 19 read calexium_lib/mail/decode_mail.anubis
20 20 read calexium_lib/mail/encode_mail.anubis
... ...
net_services/CXM_generic_client.anubis
... ... @@ -9,7 +9,7 @@
9 9  
10 10 transmit system/message_transceiver.anubis
11 11 transmit system/logger.anubis
12   -transmit calexium_lib/net_services_protocols/logger_service.anubis
  12 +//transmit calexium_lib/net_services_protocols/logger_service.anubis
13 13  
14 14 transmit calexium_lib/CXM_message_constants.anubis
15 15 transmit calexium_lib/net_services/CXM_net_services.anubis
... ...
net_services/send_file.anubis
... ... @@ -18,7 +18,7 @@ read system/message_queue.anubis
18 18 read system/files.anubis
19 19 read system/logger.anubis
20 20  
21   -read calexium_lib/net_services_protocols/logger_service.anubis
  21 +read calexium_lib/net_services_protocols/logger_client.anubis
22 22 read calexium_lib/CXM_message_constants.anubis
23 23 read calexium_lib/net_services/CXM_net_services.anubis
24 24 read calexium_lib/net_services/CXM_generic_protocol.anubis
... ...
net_services_protocols/logger_client.anubis 0 → 100644
  1 +/*
  2 + * Created by PyramIDE.
  3 + * User: フランスのトトロ aka (David RENÉ)
  4 + * Date: 01/12/2019
  5 + * Time: 02:09
  6 + * © David RENÉ
  7 + */
  8 +
  9 +transmit system/logger.anubis
  10 +read system/message_transceiver.anubis
  11 +read system/parameter/inifile.anubis
  12 +read calexium_lib/CXM_message_constants.anubis
  13 +
  14 +define One
  15 + local_net_logger
  16 + (
  17 + String logger_server,
  18 + Message log_message
  19 + )=
  20 + with anb_log_path = find_and_replace(my_anubis_directory, "\\", "/") + "/anb_log/",
  21 + with ini = loadIniFile(anb_log_path+"config.ini"),
  22 + server_port = readWord32(ini, "GENERAL", "udp_port", 45514),
  23 + forget(send_message_by_udp(log_message, ip_address((127,0,0,1)), server_port))
  24 +.
  25 +
  26 +
  27 +define Message
  28 + create_log_msg
  29 + (
  30 + String uid,
  31 + String logger_name,
  32 + String log_string,
  33 + Int level
  34 + )=
  35 + with len = length(log_string),
  36 + //println("len log string "+len);
  37 + with string = if length(log_string) > 2048 then (if sub_string(log_string, 0, 2048) is success(s) then s else "?") + "... original log string length "+len
  38 + else log_string,
  39 + with log_msg = message(_CXM_LOGGER_LOG),
  40 + forget(add_string(log_msg, "UID", uid));
  41 + forget(add_string(log_msg, "LOG_NAME", logger_name));
  42 + forget(add_string(log_msg, "LOG_STRING", string));
  43 + forget(add_int32(log_msg, "LEVEL", truncate_to_Word32(level)));
  44 + forget(add_int32(log_msg, "THREAD_ID", virtual_machine_id));
  45 + log_msg
  46 +.
  47 +
  48 +
  49 +public define One
  50 + register_logger
  51 + (
  52 + String uid,
  53 + String logger_name,
  54 + Int format_size,
  55 + Bool absolute_path,
  56 + String file_name,
  57 + LogLevel file_level,
  58 + LogLevel cons_level
  59 + )=
  60 + with register_msg = message(_CXM_LOGGER_REGISTER_LOG),
  61 + forget(add_string(register_msg, "UID", uid));
  62 + forget(add_string(register_msg, "LOG_NAME", logger_name));
  63 + forget(add_int32(register_msg, "FORMAT_SIZE", truncate_to_Word32(format_size)));
  64 + forget(add_string(register_msg, "FILE_NAME", file_name));
  65 + forget( add_int32(register_msg, "FILE_LEVEL", truncate_to_Word32(get_log_level_value(file_level))));
  66 + forget( add_int32(register_msg, "CONS_LEVEL", truncate_to_Word32(get_log_level_value(cons_level))));
  67 + local_net_logger("127.0.0.1", register_msg)
  68 +.
  69 +
  70 +public define One
  71 + register_uid
  72 + (
  73 + String uid,
  74 + String default_path,
  75 + Bool absolute_path
  76 + )=
  77 + with register_msg = message(_CXM_LOGGER_REGISTER_UID),
  78 + forget(add_string(register_msg, "UID", uid));
  79 + forget(add_string(register_msg, "DEFAULT_PATH", default_path));
  80 + forget( add_bool(register_msg, "ABSOLUTE_PATH", absolute_path));
  81 + local_net_logger("127.0.0.1", register_msg)
  82 +.
  83 +
  84 +
  85 +public define One
  86 + log
  87 + (
  88 + String uid,
  89 + LogLevel level,
  90 + String logger_name,
  91 + String log_string
  92 + )=
  93 + local_net_logger("127.0.0.1", create_log_msg(uid, logger_name, log_string, get_log_level_value(level)))
  94 +.
  95 +
  96 +public define One
  97 + logNone
  98 + (
  99 + String uid,
  100 + String logger_name,
  101 + String log_string
  102 + )=
  103 + local_net_logger("127.0.0.1", create_log_msg(uid, logger_name, log_string, 0)).
  104 +
  105 +public define One
  106 + logCriticalError
  107 + (
  108 + String uid,
  109 + String logger_name,
  110 + String log_string
  111 + )=
  112 + local_net_logger("127.0.0.1", create_log_msg(uid, logger_name, log_string, 1)).
  113 +
  114 +public define One
  115 + logError
  116 + (
  117 + String uid,
  118 + String logger_name,
  119 + String log_string
  120 + )=
  121 + local_net_logger("127.0.0.1", create_log_msg(uid, logger_name, log_string, 2)).
  122 +
  123 +public define One
  124 + logWarning
  125 + (
  126 + String uid,
  127 + String logger_name,
  128 + String log_string
  129 + )=
  130 + local_net_logger("127.0.0.1", create_log_msg(uid, logger_name, log_string, 3)).
  131 +
  132 +public define One
  133 + logInfo(
  134 + String uid,
  135 + String logger_name,
  136 + String log_string
  137 + )=
  138 + local_net_logger("127.0.0.1", create_log_msg(uid, logger_name, log_string, 4)).
  139 +
  140 +public define One
  141 + logDebug
  142 + (
  143 + String uid,
  144 + String logger_name,
  145 + String log_string
  146 + )=
  147 + local_net_logger("127.0.0.1", create_log_msg(uid, logger_name, log_string, 5)).
  148 +
  149 +public define One
  150 + logTrace
  151 + (
  152 + String uid,
  153 + String logger_name,
  154 + LogMask log_mask,
  155 + String log_string
  156 + )=
  157 + with log_msg = create_log_msg(uid, logger_name, log_string, 6),
  158 + forget(add_string(log_msg, "LOG_MASK", log_mask.mask));
  159 + local_net_logger("127.0.0.1", log_msg).
... ...
net_services_protocols/logger_server.anubis 0 → 100644
  1 +/*
  2 + * Created by PyramIDE.
  3 + * User: フランスのトトロ aka (David RENÉ)
  4 + * Date: 01/12/2019
  5 + * Time: 02:08
  6 + * © David RENÉ
  7 + */
  8 +
  9 +read tools/basis.anubis
  10 +read system/logger.anubis
  11 +read system/data_io.anubis
  12 +read system/string.anubis
  13 +read system/files.anubis
  14 +read system/parameter/inifile.anubis
  15 +read system/message_queue.anubis
  16 +read calexium_lib/CXM_message_constants.anubis
  17 +
  18 + read logger_client.anubis
  19 +
  20 +type UID_loggers:
  21 + uid_loggers(
  22 + String uid,
  23 + String base_dir,
  24 + Var(List(Logger)) loggers
  25 + )
  26 +.
  27 +
  28 + /** get_uid_loggers
  29 + */
  30 +define Maybe(UID_loggers)
  31 + get_uid_loggers
  32 + (
  33 + List(UID_loggers) all_loggers, //all known logger
  34 + String _uid //searched UID loggers
  35 + )=
  36 + if all_loggers is
  37 + {
  38 + [] then failure,
  39 + [h . t] then
  40 + if h.uid = _uid then
  41 + success(h)
  42 + else
  43 + get_uid_loggers(t, _uid)
  44 + }
  45 +.
  46 +
  47 +define Maybe(Logger)
  48 + get_logger_from_uid
  49 + (
  50 + List(UID_loggers) all_loggers,
  51 + String _uid,
  52 + String log_name,
  53 + Logger anb_logger
  54 + )=
  55 + if all_loggers is
  56 + {
  57 + [] then failure,
  58 + [h . t] then
  59 + if h.uid = _uid then
  60 + if get_logger(*h.loggers, log_name) is
  61 + {
  62 + failure then logError(anb_logger, "can't find log ["+log_name+"] in uid ["+_uid+"]");failure,
  63 + success(log) then success(log)
  64 + }
  65 + else
  66 + get_logger_from_uid(t, _uid, log_name, anb_logger)
  67 + }
  68 +.
  69 +
  70 +define Maybe(Logger)
  71 + create_logger_from_message
  72 + (
  73 + Logger anb_logger,
  74 + Message msg,
  75 + String base_directory
  76 + )=
  77 + if find_string(msg, "LOG_NAME") is {failure then logError(anb_logger, "create_logger_from_message can't find LOG_NAME");failure, success(loggerName) then
  78 + if find_int32 (msg, "FORMAT_SIZE") is {failure then logError(anb_logger, "create_logger_from_message can't find FORMAT_SIZE");failure, success(formatting_size) then
  79 + if find_string(msg, "FILE_NAME") is {failure then logError(anb_logger, "create_logger_from_message can't find FILE_NAME");failure, success(fileName) then
  80 + if find_int32 (msg, "FILE_LEVEL") is {failure then logError(anb_logger, "create_logger_from_message can't find FILE_LEVEL");failure,success(_fileLevel) then
  81 + if find_int32 (msg, "CONS_LEVEL") is {failure then logError(anb_logger, "create_logger_from_message can't find CONS_LEVEL");failure,success(_consoleLevel) then
  82 +
  83 + with file_level = get_LogLevel_from_value(to_Int(_fileLevel)),
  84 + with console_level = get_LogLevel_from_value(to_Int(_consoleLevel)),
  85 + with final_file_path = base_directory + fileName,
  86 + make_directories(final_file_path);
  87 + success(createLogger(loggerName, to_Int(formatting_size), final_file_path, file_level, console_level))
  88 + }}}}}
  89 +.
  90 +
  91 + /** register one logger into UID
  92 + */
  93 +define One
  94 + register_logger
  95 + (
  96 + Var(List(UID_loggers)) logs,
  97 + Message msg,
  98 + String base_directory,
  99 + Logger anb_logger
  100 + )=
  101 +
  102 + if find_string(msg, "UID") is { failure then logError(anb_logger, "register_logger UID not found"), success(uid) then
  103 + if find_string(msg, "LOG_NAME") is { failure then logError(anb_logger, "register_logger can't find LOG_NAME"), success(log_name) then
  104 + if get_uid_loggers(*logs, uid) is
  105 + {
  106 + failure then //the uid logger doesn't exists so we create and
  107 + logError(anb_logger, "register_logger UID logger ["+uid+"] doesn't exist. Please register the UID first"),
  108 + success(_uid_log) then
  109 + if get_logger(*_uid_log.loggers, log_name) is
  110 + {
  111 + failure then
  112 + if create_logger_from_message(anb_logger, msg, _uid_log.base_dir) is
  113 + {
  114 + failure then unique,
  115 + success(new_log) then
  116 + _uid_log.loggers <- [new_log . *_uid_log.loggers];
  117 + logInfo(anb_logger, "register_logger: logger ["+log_name+"] created in ["+uid+"]")
  118 + }
  119 + success(_) then
  120 + logWarning(anb_logger, "register_logger: logger ["+log_name+"] already exists in ["+uid+"]")
  121 + }
  122 + }
  123 + }}
  124 +.
  125 +
  126 +define One
  127 + register_uid
  128 + (
  129 + Var(List(UID_loggers)) logs,
  130 + Message msg,
  131 + String log_server_base_dir,
  132 + Logger anb_logger
  133 + )=
  134 + if find_string(msg, "UID") is { failure then logError(anb_logger, "register_uid can't find UID field"), success(uid) then
  135 + with default_path = find_string(msg, "DEFAULT_PATH", "/"),
  136 + abs_path = find_bool(msg, "ABSOLUTE_PATH", false),
  137 + if get_uid_loggers(*logs, uid) is
  138 + {
  139 + failure then //the uid logger doesn't exists so we create and
  140 + with base_dir = if abs_path then default_path else log_server_base_dir + default_path,
  141 + with new_uid = uid_loggers(uid, base_dir, var([])),
  142 + logs <- [ new_uid . *logs];
  143 + logInfo(anb_logger, "register_uid UID logger ["+uid+"] success with base dir '"+base_dir+"'.")
  144 + success(_) then
  145 + logError(anb_logger, "register_uid UID logger ["+uid+"] already exists.")
  146 + }}
  147 +.
  148 +
  149 +define Bool
  150 + process_log
  151 + (
  152 + Logger log,
  153 + Message msg
  154 + )=
  155 + if find_string(msg, "LOG_STRING") is {failure then logError(log, "process_log can't find LOG_STRING");false, success(log_string) then
  156 + if find_int32 (msg, "LEVEL") is {failure then logError(log, "process_log can't find LEVEL");false, success(int_level) then
  157 + if find_int32 (msg, "THREAD_ID") is {failure then logError(log, "process_log can't find THREAD_ID");false, success(thread_id) then
  158 +
  159 + with level = get_LogLevel_from_value(to_Int(int_level)),
  160 + if level is logTrace then
  161 + if find_string(msg, "LOG_MASK") is
  162 + {
  163 + failure then
  164 + //println("process_log can't find LogMask ["+log_string+"]");
  165 + logError(log, "process_log can't find LOG_MASK");false,
  166 + success(log_mask) then logTrace(log, logMask(log_mask), log_string, thread_id); true
  167 + }
  168 + else doLog(log, log_string, level, thread_id); true
  169 +
  170 + }
  171 + }
  172 + }.
  173 +
  174 +define Bool
  175 + process_log
  176 + (
  177 + List(Logger) logs,
  178 + Message msg
  179 + )=
  180 + if find_string(msg, "LOG_NAME") is
  181 + {
  182 + failure then println("process_log can't find LOG_NAME");false,
  183 + success(log_name) then
  184 + if get_logger(logs, log_name) is
  185 + {
  186 + failure then println("can't find log ["+log_name+"]");false,
  187 + success(log) then process_log(log, msg)
  188 + }
  189 + }
  190 +.
  191 +
  192 +define Bool
  193 + process_log
  194 + (
  195 + List(UID_loggers) logs,
  196 + Message msg,
  197 + Logger anb_logger
  198 + )=
  199 + with uid = if find_string(msg, "UID") is { failure then "", success(_uid) then _uid},
  200 +
  201 + if find_string(msg, "LOG_NAME") is
  202 + {
  203 + failure then logError(anb_logger, "process_log can't find LOG_NAME");false,
  204 + success(log_name) then
  205 + if get_logger_from_uid(logs, uid, log_name, anb_logger) is
  206 + {
  207 + failure then logError(anb_logger, "can't find log ["+log_name+"] in ["+uid+"]");false,
  208 + success(log) then process_log(log, msg)
  209 + }
  210 + }
  211 +.
  212 +
  213 +public define String
  214 + data_preview
  215 + (
  216 + ByteArray data,
  217 + Int max
  218 + ) =
  219 + with l = length(data),
  220 + firsts_bytes = extract(data, 0, max),
  221 + "Length=" + l + "; String='"+to_string(firsts_bytes)+"' Buffer=[" + to_ascii(firsts_bytes) + (if l > max then "...]" else "]").
  222 +
  223 +
  224 +define (UDP_Socket, ByteArray, Truncation, Word32, Word32) -> One
  225 + make_udp_handler
  226 + (
  227 + Var(List(UID_loggers)) logs,
  228 + String base_directory,
  229 + Logger anb_logger
  230 + ) =
  231 + (
  232 + UDP_Socket socket,
  233 + ByteArray data,
  234 + Truncation truncation,
  235 + Word32 ip_address,
  236 + Word32 ip_port
  237 + ) |->
  238 + with ip = ip_addr_to_string(ip_address),
  239 + logTrace(anb_logger, logMask("Logger"), "LoggerServer: data received (" + length(data) + " bytes) from IP " + ip + "... ");
  240 + //println("LoggerServer: data received (" + length(data) + " bytes) from IP " + ip + "... ");
  241 + //println("LoggerServer: data_preview " + data_preview(data, 20));
  242 +
  243 + if receive_message_from_io(make_data_io(data)) is
  244 + {
  245 + failure then
  246 + //println("LoggerServer: Bad data packet received from IP " + ip + ": " + data_preview(data, 20));
  247 + logWarning(anb_logger, "LoggerServer: Bad data packet received from IP " + ip + ": " + data_preview(data, 20)),
  248 + success(msg) then
  249 + if *msg.what = _CXM_LOGGER_LOG then
  250 + forget(process_log(*logs, msg, anb_logger))
  251 + else if *msg.what = _CXM_LOGGER_REGISTER_UID then
  252 + forget(register_uid(logs, msg, base_directory, anb_logger))
  253 + else if *msg.what = _CXM_LOGGER_REGISTER_LOG then
  254 + forget(register_logger(logs, msg, base_directory, anb_logger))
  255 + else
  256 + logError(anb_logger, "LoggerService: wrong message_received. [" + to_hexa(*msg.what) + "] is not _CXM_LOGGER_LOG or _CXM_LOGGER_REGISTER or _CXM_LOGGER_UNREGISTER ")
  257 +}
  258 +.
  259 +define One
  260 + my_notify
  261 + (
  262 + One dummy
  263 + ) =
  264 + unique.
  265 +
  266 +public define Maybe(UDP_Server)
  267 + start_logger_server
  268 + (
  269 + Var(List(UID_loggers)) logs,
  270 + Logger anb_logger,
  271 + Word32 logger_listen_port,
  272 + String base_directory
  273 + ) =
  274 + if start_udp_server(0,
  275 + logger_listen_port,
  276 + make_udp_handler(logs, base_directory, anb_logger),
  277 + 8*1024,
  278 + my_notify) is
  279 + {
  280 + cannot_create_the_socket then logError(anb_logger, "Cannot create the listening socket."); failure,
  281 + cannot_bind_address_port then logError(anb_logger, "Cannot bind to port " + logger_listen_port + "."); failure,
  282 + access_denied then logError(anb_logger, "Cannot listen on port " + logger_listen_port + "."); failure,
  283 + ok(server) then logInfo(anb_logger, "LocalLog Server started on port " + logger_listen_port + "."); success(server)
  284 + }
  285 +.
  286 +
  287 +
  288 +global define One
  289 + anb_log
  290 + (
  291 + List(String) args
  292 + )=
  293 + with anb_log_path = find_and_replace(my_anubis_directory, "\\", "/") + "/anb_log/",
  294 + with ini = loadIniFile(anb_log_path+"config.ini"),
  295 + server_port = readWord32(ini, "GENERAL", "udp_port", 45514),
  296 + base_directory = readString(ini, "GENERAL", "base_directory", anb_log_path+"log/"),
  297 + make_directories(base_directory);
  298 + //create own logger
  299 + with anb_logger = createLogger("anb_log", 7, base_directory + "anb_log.log", logDebug, logDebug),
  300 +
  301 + forget(start_logger_server(var([]), anb_logger, server_port, base_directory))
  302 +.
... ...
net_services_protocols/logger_service.anubis renamed to net_services_protocols/logger_service_deprecated.anubis
1 1 /*
2 2 *
3   - * User: David RENE
  3 + * User: David RENÉ
4 4 * Date: 29/07/2007
5 5 * Time: 02:04
6   - * (c) Calexium
  6 + * © David RENÉ
7 7 *
8 8 */
9 9  
... ... @@ -16,6 +16,8 @@ read system/logger.anubis
16 16 read system/message_queue.anubis
17 17 read system/message_transceiver.anubis
18 18  
  19 +read system/files.anubis
  20 +
19 21 read calexium_lib/CXM_message_constants.anubis
20 22 read calexium_lib/net_services/CXM_net_services.anubis
21 23 read calexium_lib/net_services/CXM_generic_protocol.anubis
... ... @@ -26,12 +28,14 @@ read calexium_lib/net_services/CXM_generic_protocol.anubis
26 28 // and you define a function named 'logger_port' which simply return the port number as an Word32.
27 29 // Example:
28 30 // public define Word32 logger_port = 33610.
29   -read config/logger_config.anubis
  31 +// read config/logger_config.anubis
30 32  
31 33 // previous 'read' replaced by an empty declaration. Should be defined into main source file.
32 34 public define Word32 logger_port.
33 35  
34   -public define Word32 logger_srv_version = 1.
  36 +
  37 +
  38 + public define Word32 logger_srv_version = 1.
35 39  
36 40 /**
37 41 * has_update scan the given message for finding corresponding available update
... ... @@ -60,7 +64,7 @@ public define Word32 logger_srv_version = 1.
60 64 *
61 65 */
62 66  
63   -define Bool
  67 + define Bool
64 68 process_log
65 69 (
66 70 Logger log,
... ... @@ -114,7 +118,7 @@ define Bool
114 118 }
115 119 }.
116 120  
117   -define Bool
  121 + define Bool
118 122 process_log
119 123 (
120 124 List(Logger) logs,
... ... @@ -129,8 +133,29 @@ define Bool
129 133 failure then println("can't find log ["+log_name+"]");false,
130 134 success(log) then process_log(log, msg)
131 135 }
132   - }.
133   -
  136 + }
  137 +.
  138 +
  139 +//define Bool
  140 +// process_log
  141 +// (
  142 +// List(UID_loggers) logs,
  143 +// Message msg
  144 +// )=
  145 +// with uid = if find_string(msg, "UID") is { failure then "", success(_uid) then _uid},
  146 +//
  147 +// if find_string(msg, "LogName") is
  148 +// {
  149 +// failure then println("process_log can't find LogName");false,
  150 +// success(log_name) then
  151 +// if get_logger(logs, uid, log_name) is
  152 +// {
  153 +// failure then println("can't find log ["+log_name+"]");false,
  154 +// success(log) then process_log(log, msg)
  155 +// }
  156 +// }
  157 +//.
  158 +
134 159 /** message_received is the principal
135 160 */
136 161 /*
... ... @@ -183,7 +208,7 @@ define Bool
183 208 /****************** LOCAL UDP SERVICE *************/
184 209  
185 210  
186   -public define String
  211 + public define String
187 212 data_preview
188 213 (
189 214 ByteArray data,
... ... @@ -193,7 +218,7 @@ public define String
193 218 firsts_bytes = extract(data, 0, max),
194 219 "Length=" + l + "; String='"+to_string(firsts_bytes)+"' Buffer=[" + to_ascii(firsts_bytes) + (if l > max then "...]" else "]").
195 220  
196   -define (UDP_Socket, ByteArray, Truncation, Word32, Word32) -> One
  221 + define (UDP_Socket, ByteArray, Truncation, Word32, Word32) -> One
197 222 make_udp_handler
198 223 (
199 224 List(Logger) logs,
... ... @@ -223,19 +248,21 @@ define (UDP_Socket, ByteArray, Truncation, Word32, Word32) -&gt; One
223 248 println("LoggerService: wrong message_received. [" + to_hexa(*msg.what) + "] is not _CXM_LOGGER_LOG ")
224 249 }.
225 250  
226   -define One
  251 +
  252 +
  253 + define One
227 254 my_notify
228   - (
229   - One dummy
230   - ) =
231   - unique.
232   -
233   -public define Maybe(UDP_Server)
234   - start_logger_server
235   - (
236   - List(Logger) logs,
237   - Logger debug_logger
238   - ) =
  255 + (
  256 + One dummy
  257 + ) =
  258 + unique.
  259 +
  260 + public define Maybe(UDP_Server)
  261 + start_logger_server
  262 + (
  263 + List(Logger) logs,
  264 + Logger debug_logger
  265 + ) =
239 266 if start_udp_server(0,
240 267 logger_port,
241 268 make_udp_handler(logs, debug_logger),
... ... @@ -247,11 +274,13 @@ public define Maybe(UDP_Server)
247 274 access_denied then logError(debug_logger, "Cannot listen on port " + logger_port + "."); failure,
248 275 ok(server) then logInfo(debug_logger, "LocalLog Server started on port " + logger_port + "."); success(server)
249 276 }.
250   -
  277 +
  278 +
  279 +
251 280  
252 281 /****************** CLIENT PART *******************/
253 282  
254   -define One
  283 + define One
255 284 local_net_logger
256 285 (
257 286 String logger_server,
... ... @@ -260,7 +289,7 @@ define One
260 289 forget(send_message_by_udp(log_message, ip_address((127,0,0,1)), logger_port)).
261 290  
262 291  
263   -define Message
  292 + define Message
264 293 create_log_msg
265 294 (
266 295 String logger_name,
... ... @@ -280,67 +309,7 @@ define Message
280 309 .
281 310 */
282 311  
283   -// HACK Begin of Hacked version
284   - define String debug_log = "Debug".
285   - define String config_log = "Config".
286   - define String incoming_log = "Incoming".
287   - define String outgoing_log = "Outgoing".
288   - define String pop3_log = "POP3".
289   - define String mailing_log = "Mailing".
290   - define String errors_log = "Errors".
291   - define String security_log = "Security".
292   - define String spams_log = "Spams".
293   - define String api_log = "MF_API".
294   - define String internal_log = "INTERNAL".
295   -
296   -
297   - define String
298   - get_log_file
299   - (
300   - String log_name
301   - ) =
302   - if log_name = debug_log then "debug.log"
303   - else if log_name = "SendMail" then "debug.log"
304   - else if log_name = config_log then "config.log"
305   - else if log_name = incoming_log then "incoming.log"
306   - else if log_name = outgoing_log then "outgoing.log"
307   - else if log_name = pop3_log then "pop3.log"
308   - else if log_name = mailing_log then "mailing.log"
309   - else if log_name = errors_log then "errors.log"
310   - else if log_name = "DB" then "errors.log"
311   - else if log_name = "SQL" then "sql_profiling.log"
312   - else if log_name = security_log then "security.log"
313   - else if log_name = spams_log then "spams.log"
314   - else if log_name = api_log then "api.log"
315   - else if log_name = internal_log then "internal"
316   - else "unknown.log".
317   -
318   -
319   - define One
320   - local_net_logger
321   - (
322   - String logger_server,
323   - One _
324   - )=
325   - unique.
326   -
327   - define One
328   - create_log_msg
329   - (
330   - String logger_name,
331   - String log_string,
332   - Int level
333   - )=
334   - with log = createLogger(logger_name, 8, "/var/MailFountain/log/" + get_log_file(logger_name), logTrace, logTrace),
335   - logLevel = get_LogLevel_from_value(level),
336   - protect
337   - doLog(log, log_string, logLevel, virtual_machine_id).
338   -
339   -// HACK End of Hacked version
340   -
341   -
342   -
343   -public define One
  312 + public define One
344 313 log(
345 314 LogLevel level,
346 315 String logger_name,
... ... @@ -348,49 +317,49 @@ public define One
348 317 )=
349 318 local_net_logger("127.0.0.1", create_log_msg(logger_name, log_string, get_log_level_value(level))).
350 319  
351   -public define One
  320 + public define One
352 321 logNone(
353 322 String logger_name,
354 323 String log_string
355 324 )=
356 325 local_net_logger("127.0.0.1", create_log_msg(logger_name, log_string, 0)).
357 326  
358   -public define One
  327 + public define One
359 328 logCriticalError(
360 329 String logger_name,
361 330 String log_string
362 331 )=
363 332 local_net_logger("127.0.0.1", create_log_msg(logger_name, log_string, 1)).
364 333  
365   -public define One
  334 + public define One
366 335 logError(
367 336 String logger_name,
368 337 String log_string
369 338 )=
370 339 local_net_logger("127.0.0.1", create_log_msg(logger_name, log_string, 2)).
371 340  
372   -public define One
  341 + public define One
373 342 logWarning(
374 343 String logger_name,
375 344 String log_string
376 345 )=
377 346 local_net_logger("127.0.0.1", create_log_msg(logger_name, log_string, 3)).
378 347  
379   -public define One
  348 + public define One
380 349 logInfo(
381 350 String logger_name,
382 351 String log_string
383 352 )=
384 353 local_net_logger("127.0.0.1", create_log_msg(logger_name, log_string, 4)).
385 354  
386   -public define One
  355 + public define One
387 356 logDebug(
388 357 String logger_name,
389 358 String log_string
390 359 )=
391 360 local_net_logger("127.0.0.1", create_log_msg(logger_name, log_string, 5)).
392 361  
393   -public define One
  362 + public define One
394 363 logTrace(
395 364 String logger_name,
396 365 LogMask log_mask,
... ... @@ -399,15 +368,3 @@ public define One
399 368 with log_msg = create_log_msg(logger_name, log_string, 6),
400 369 forget(add_string(log_msg, "LogMask", log_mask.mask));
401 370 local_net_logger("127.0.0.1", log_msg).
402   -
403   -// HACK hacked version
404   - public define One
405   - logTrace(
406   - String logger_name,
407   - LogMask log_mask,
408   - String log_string
409   - )=
410   - if log_mask is logMask(mask) then
411   - if mask = "send_mail" | mask = "smtp" | mask = "sql_profiling" then
412   - local_net_logger("127.0.0.1", create_log_msg(logger_name, log_string, 6))
413   - else unique.
... ...
net_services_protocols/logger_test.anubis 0 → 100644
  1 +/*
  2 + * Created by PyramIDE.
  3 + * User: フランスのトトロ aka (David RENÉ)
  4 + * Date: 01/12/2019
  5 + * Time: 19:52
  6 + * © David RENÉ
  7 + */
  8 +
  9 +read tools/basis.anubis
  10 +read logger_client.anubis
  11 +
  12 +global define One
  13 + logger_test
  14 + (
  15 + List(String) args
  16 + )=
  17 + with app0 = "logger test0",
  18 + uid0_dir = "logger test0/",
  19 +log_name0_0 = "log_name0_0",
  20 +log_name0_1 = "log_name0_1",
  21 + uid1 = "logger test1",
  22 +
  23 + register_uid(app0, uid0_dir, false);
  24 + register_logger(app0, log_name0_0, 8, false, log_name0_0+".log", logDebug, logDebug);
  25 + register_logger(app0, log_name0_1, 8, false, log_name0_1+".log", logDebug, logDebug);
  26 + sleep(1000);
  27 + logNone (app0, log_name0_0, "logNone in log_name0_0");
  28 + logNone (app0, log_name0_1, "logNone in log_name0_1");
  29 + logCriticalError (app0, log_name0_0, "logCriticalError in log_name0_0");
  30 + logCriticalError (app0, log_name0_1, "logCriticalError in log_name0_1");
  31 + logError (app0, log_name0_0, "logError in log_name0_0");
  32 + logError (app0, log_name0_1, "logError in log_name0_1");
  33 + logWarning (app0, log_name0_0, "logWarning in log_name0_0");
  34 + logWarning (app0, log_name0_1, "logWarning in log_name0_1");
  35 + logInfo (app0, log_name0_0, "logInfo in log_name0_0");
  36 + logInfo (app0, log_name0_1, "logInfo in log_name0_1");
  37 + logDebug (app0, log_name0_0, "logDebug in log_name0_0");
  38 + logDebug (app0, log_name0_1, "logDebug in log_name0_1")
  39 +.
... ...
web/CXM_making_a_web_site.anubis
... ... @@ -1492,6 +1492,8 @@ public define HTML_Off_Form img(String src, String alt)
1492 1492 public define HTML_Off_Form img(List(CoreAttrs) attrs, String src) = img(attrs, src, "").
1493 1493 public define HTML_Off_Form img(CoreAttrs attr, String src) = img([attr], src, "").
1494 1494 public define HTML_Off_Form img(String src, Int width, Int height) = img([attr("width",to_String(width)+"px"), attr("height",to_String(height)+"px")], src, src).
  1495 +public define HTML_Off_Form img(String src, String alt, Int width, Int height) =
  1496 + html_void_tag("img", [attr("src",src), attr("alt",alt), attr("width",to_String(width)+"px"), attr("height",to_String(height)+"px")]).
1495 1497 public define HTML_Off_Form img(List(CoreAttrs) attrs, String src, String alt, Int width, Int height) =
1496 1498 html_void_tag("img", attrs + [attr("src",src), attr("alt",alt), attr("width",to_String(width)+"px"), attr("height",to_String(height)+"px")]).
1497 1499 public define HTML_Off_Form img(CoreAttrs _attr, String src, String alt, Int width, Int height) =
... ... @@ -1561,6 +1563,12 @@ public define HTML_Off_Form strong(CoreAttrs attr, HTML_Off_Form content)
1561 1563 public define HTML_Off_Form strong(List(HTML_Off_Form) content) = html_tag("strong", [], content).
1562 1564 public define HTML_Off_Form strong(HTML_Off_Form content) = html_tag("strong", [], [content]).
1563 1565  
  1566 + // <textarea>
  1567 +public define HTML_Off_Form textarea(List(CoreAttrs) attrs, List(HTML_Off_Form) content) = html_tag("textarea", attrs, content).
  1568 +public define HTML_Off_Form textarea(List(CoreAttrs) attrs, HTML_Off_Form content) = html_tag("textarea", attrs, [content]).
  1569 +public define HTML_Off_Form textarea(CoreAttrs attr, List(HTML_Off_Form) content) = html_tag("textarea", [attr], content).
  1570 +public define HTML_Off_Form textarea(CoreAttrs attr, HTML_Off_Form content) = html_tag("textarea", [attr], [content]).
  1571 +
1564 1572 // <ul>
1565 1573 public define HTML_Off_Form ul(List(CoreAttrs) attrs, List(HTML_Off_Form) content) = html_tag("ul", attrs, content).
1566 1574 public define HTML_Off_Form ul(List(CoreAttrs) attrs, HTML_Off_Form content) = html_tag("ul", attrs, [content]).
... ...
web/plugin/plugin.anubis
... ... @@ -59,8 +59,8 @@ public define List(WEB_Plugin)
59 59 String plugin_file_mask //mask for loading plugin like "my_app_plugin_*.adm"
60 60 )
61 61 =
62   - with files = directory_list(modules_directory, plugin_file_mask),
63   - map_select((String file_name) |-> load_plugin(modules_directory+file_name), files)
  62 + with files = directory_list(directory, plugin_file_mask),
  63 + map_select((String file_name) |-> load_plugin(directory+file_name), files)
64 64 //merge_sort(all_list, migration_less)
65 65 .
66 66  
... ...