That works like a champ! Thanks for the info.

Here is what I did to get it working for all of you that also want this.

On debian:

apt-get update; apt-get install libexpect-perl
cd /path/to/your/l4d/install
su - gameserver-user
cd bin
vi logger
====Copy/Paste the following:=====

#!/usr/bin/perl -w
use Expect;
use File::Basename;
use File::Path;
use strict;

my $log_file = shift @ARGV;
my $log_dir = dirname($log_file);
mkpath($log_dir) unless -d $log_dir;

my $expect = new Expect;
$expect->log_file($log_file);
$expect->spawn(@ARGV);
$expect->expect(undef);
exit($?);

=====CUT=====

:wq <-write and quit

chmod +x logger

Add the following to your startup line: -consolelog mylogname.log

Start up the server.  You'll see the logfile in the srcds_run directory.

Enjoy!

-f0rkz

On Mon, 2010-02-08 at 09:39 -0800, Milton Ngan wrote:
> In left4dead and left4dead2, the srcds_run wrapper supports and extra option 
> -consolelog. This launches a program called "logger" which is expected to be 
> in the bin directory of your install. I never shipped this utility since it 
> was something only I was using, and it will not work out of the box since it 
> uses a perl module that is not installed by default. But if there is a need 
> for that sort of thing, I can share the script with you. It is a Perl Expect 
> script. A simple redirection will not work because the srcds_linux writes 
> directly to the terminal not stdout. 
> 
> The -consolelog option isn't available in the orangebox/CS:S games, but it is 
> easy to add this. I have included the code for the "logger" script below. It 
> is a very simple wrapper. Make of it what you will. "logger" takes the path 
> to the console log as the first argument. The rest of the arguments are 
> assumed to be the command you want run. But by doing this, you are giving up 
> the ability to interact with the console. That shouldn't be an issue if you 
> have netconn or rcon setup, which is the way I interact with our servers. 
> 
> #!/usr/bin/perl -w
> use Expect;
> use File::Basename;
> use File::Path;
> use strict;
> 
> my $log_file = shift @ARGV;
> my $log_dir = dirname($log_file);
> mkpath($log_dir) unless -d $log_dir;
> 
> my $expect = new Expect;
> $expect->log_file($log_file);
> $expect->spawn(@ARGV);
> $expect->expect(undef);
> exit($?);
> 
> 
> -----Original Message-----
> From: hlds_linux-boun...@list.valvesoftware.com 
> [mailto:hlds_linux-boun...@list.valvesoftware.com] On Behalf Of f0rkz
> Sent: Monday, February 08, 2010 7:55 AM
> To: hlds_linux@list.valvesoftware.com
> Subject: [hlds_linux] Logging console output
> 
> Ok.  I know there is logging built into games using the Log on cvar.
> What I need is the actual contents of the console captured to a log
> file.  I noticed srcds_run is a shell script that execs another program
> so redirecting the output to a log file isn't possible.  Does anyone
> have any tricks or scripts to log the output of srcds_run and any of the
> exec'd programs under it?
> 
> Thanks for your help,
> 
> f0rkz
> 
> 
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives, please 
> visit:
> http://list.valvesoftware.com/mailman/listinfo/hlds_linux
> 
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives, please 
> visit:
> http://list.valvesoftware.com/mailman/listinfo/hlds_linux



_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlds_linux

Reply via email to