Bonjour,

J'ai trouvé un super module de gestion de log pour mon démon. Ca marche au poil SAUF que je renvonctre une difficulté dans le fichier log. A chaqe fin de ligne, voir même en plein milieu, j'ai un ^M qui apparaît :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
oû 12 12:28:28 [INFO] 127.0.0.1 -> [stop^M]: Stopping xxxxxx.
1161 aoû 12 12:28:28 [INFO] 127.0.0.1 -> quit
1162 aoû 12 12:28:28 [INFO] 127.0.0.1 -> [quit]: Bye bye
1163 aoû 12 12:30:47 [INFO] Serveur Daemon est pret a recevoir des clients
1164 aoû 12 12:30:51 [INFO] Connexion de 127.0.0.1
1165 aoû 12 12:30:51 [INFO] 127.0.0.1 -> stop^M
1166 aoû 12 12:30:51 [INFO] 127.0.0.1 -> [stop^M]: Stopping xxxxx.
1167 aoû 12 12:30:51 [INFO] 127.0.0.1 -> quit
1168 aoû 12 12:30:51 [INFO] 127.0.0.1 -> [quit]: Bye bye
1169 aoû 12 12:31:26 [INFO] Serveur Daemon est pret a recevoir des clients
1170 aoû 12 12:31:28 [INFO] Connexion de 127.0.0.1
1171 aoû 12 12:31:28 [INFO] 127.0.0.1 -> stop^M
1173 aoû 12 12:31:28 [INFO] 127.0.0.1 -> quit
1174 aoû 12 12:31:28 [INFO] 127.0.0.1 -> [quit]: Bye bye
Le pus bizarre, c'est que ça n'apparait pas sur toutes les lignes. Celles en "quit", ça marche bien. POur vous donner une idée dde ce démon, c'est un serveur TCP tournant sur le port 777 qui attends des connexions telnet. Une fois le client connecté, il a la possibilité d'envoyer des mot clés qui déclenchent une action sur le serveur avec des droits particuliers. Les lignes où il y a un ^M, sont en fait des exécution de tâches pré-définies dans le démon.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 # ecrit les logs
sub set_log {
        my ($log,$logmsg,$level) = @_;
        $log->$level("$logmsg");
}
.....
.....
print $client "Bienvenue sur le serveur $serv_name\n";
my $hostinfo = gethostbyaddr($client->peeraddr);
&set_log($log,"Connexion de ".$client->peerhost,"info");
while (<$client>) {
    my $action = $_;
    chomp ($action);
    &set_log($log,$client->peerhost." -> $_","info");
    next unless /\S/;
    if (/^quit/i) {
	&set_log($log,$client->peerhost." -> [$action]: Bye bye","info");
	print $client "Bye bye\n";
	last;
   }
   elsif (/^stop/i) {
	my $ret = `/etc/init.d/monappli stop`;
	print $client $ret;
	chomp ($ret);
	&set_log($log,$client->peerhost." -> [$action]: $ret","info");
  }
.......
Auriez-vous une idée pour résoudre le souci ?