[13:12:10] <subj_rs>
http://svn.eu.adacore.com/anonsvn/Dev/trunk/gps/gnatlib/src/syslog/gnatcoll-traces-syslog.adb
procedure Syslog
(Facility : Facilities := Kernel;
Level : Levels := Emergency;
Message : String)
is
-- We go through our own wrapper of syslog, because on some systems
-- apparently we get a STORAGE_ERROR when interfacing directly to
-- "syslog".
procedure Internal (Priority : Integer; Message : String);
pragma Import (C, Internal, "syslog_wrapper");
-- Low-level binding
begin
Internal (Levels_To_Integer (Level) + Facilities_To_Integer (Facility),
Message & ASCII.NUL);
end Syslog;
оч интересно
[13:13:06] <subj_rs> где бы найти ихнюю реализацию syslog_wrapper
[13:26:00] <yeo> вадим разве вчера не присылал
[13:44:18] <vgodunko> subj_rs: см. дщп
[13:44:19] <vgodunko> log
[13:44:20] <Жаба> vgodunko, Logs here: http://subtroj.info/ada-ru@conference.jabber.ru/
[13:45:08] <vgodunko> syslog_wrapper(int priority, const char* msg) {
syslog(priority, "%s", msg);
}
[13:49:33] <subj_rs> у меня кое чего получилос
вот чо пишет даже в сислог
Apr 11 13:44:41 srv01 Ada[10093]: Client connected from 127.0.0.1:49529
Apr 11 13:44:47 srv01 Ada[10093]: Client connected from 127.0.0.1:49531
вот как сделал:
procedure Syslog (Msg : String) is
use Interfaces;
use Interfaces.C;
use Interfaces.C.Strings;
procedure C_Openlog (Ident : chars_ptr; Option : int; Facility : int);
pragma Import (C, C_Openlog, "openlog");
procedure C_Syslog (Priority : int; Format : String; Msg : String);
pragma Import (C, C_Syslog, "syslog");
procedure C_Closelog;
pragma Import(C, C_Closelog, "closelog");
Prefix : chars_ptr := New_String ("Ada");
Format : constant String := "%s" & ASCII.NUL;
begin
Gnat.Task_Lock.Lock;
C_Openlog (Prefix,
int (Unsigned_8 (16#08#) or Unsigned_8 (16#01#)), -- LOG_NDELAY | LOG_PID
int (Shift_Left (Unsigned_8 (3), 3))); -- (3<<3) LOG_DAEMON
C_Syslog (6, Format, Msg & ASCII.NUL); -- LOG_INFO
C_Closelog;
Free (Prefix);
Gnat.Task_Lock.Unlock;
end Syslog;
правда работает через раз, то гуд то память начинает всю выжирать. причем в gnatcoll последнем именно так и сделанно )
[20:39:45] <vgodunko> subj_rs: в последнем GNATCOLL сделано через обёртку
[20:43:28] <subjrs> я последний и скачал который был, там через стринги )
[20:48:34] <vgodunko> Ну а мы то смотрели действительно последний ;-)