Index: loggerAppender.tcl
===================================================================
RCS file: /cvsroot/tcllib/tcllib/modules/log/loggerAppender.tcl,v
retrieving revision 1.1
diff -c -r1.1 loggerAppender.tcl
*** loggerAppender.tcl	28 Sep 2005 21:14:31 -0000	1.1
--- loggerAppender.tcl	8 Nov 2005 16:03:49 -0000
***************
*** 280,285 ****
--- 280,397 ----
      return $procText
  }
  
+ ##Procedure Header
+ # $Id$
+ # Copyright (c) 2005 Cisco Systems, Inc.
+ #
+ # Name:
+ #       ::logger::appender::fileAppend
+ #
+ # Purpose:
+ #
+ #
+ # Synopsis:
+ #       ::logger::appender::fileAppend -level <level> -service <service> -outputChannel <channel> [options]
+ #
+ # Arguments:
+ #       -level <level>
+ #            name of level to fill in as 'priority' in log proc
+ #       -service <service>
+ #            name of service to fill in as 'category' in log proc
+ #       -appenderArgs <appenderArgs>
+ #            any additional args in list form
+ #       -conversionPattern <conversionPattern>
+ #            log pattern to use (see genLogProc)
+ #       -procName <procName>
+ #            explicitly set the proc name
+ #       -procNameVar <procNameVar>
+ #            name of variable to set in the calling context
+ #            variable has name of proc
+ #       -outputChannel <channel>
+ #            name of output channel (eg stdout, file handle)
+ #
+ #
+ # Return Values:
+ #       a runnable command
+ #
+ # Description:
+ #
+ #
+ # Examples:
+ #
+ #
+ # Notes:
+ #       1.
+ #
+ # End of Procedure Header
+ 
+ 
+ proc ::logger::appender::fileAppend {args} {
+     set usage {console
+ 	?-level level?
+ 	?-service service?
+ 	?-outputChannel channel?
+ 	?-appenderArgs appenderArgs?
+     }
+     set bargs $args
+     set conversionPattern {\[%d\] \[%c\] \[%M\] \[%p\] %m}
+     while {[llength $args] > 1} {
+ 	set opt [lindex $args 0]
+ 	set args [lrange $args 1 end]
+ 	switch  -exact -- $opt {
+ 	    -level { set level [lindex $args 0]
+ 		set args [lrange $args 1 end]
+ 	    }
+ 	    -service { set service [lindex $args 0]
+ 		set args [lrange $args 1 end]
+ 	    }
+ 	    -appenderArgs {
+ 		set appenderArgs [lindex $args 0]
+ 		set args [lrange $args 1 end]
+ 		set args [concat $args $appenderArgs]
+ 	    }
+ 	    -conversionPattern {
+ 		set conversionPattern [lindex $args 0]
+ 		set args [lrange $args 1 end]
+ 	    }
+ 	    -procName {
+ 		set procName [lindex $args 0]
+ 		set args [lrange $args 1 end]
+ 	    }
+ 	    -procNameVar {
+ 		set procNameVar [lindex $args 0]
+ 		set args [lrange $args 1 end]
+ 	    }
+ 	    -outputChannel {
+ 		set outputChannel [lindex $args 0]
+ 		set args [lrange $args 1 end]
+ 	    }
+ 	    default {
+ 		return -code error [msgcat::mc "Unknown argument: \"%s\" :\nUsage:\
+   	                 %s" $opt $usage]
+ 	    }
+ 	}
+     }
+     if {![info exist procName]} {
+ 	set procName [genProcName $bargs]
+     }
+     if {[info exist procNameVar]} {
+ 	upvar $procNameVar myProcNameVar
+     }
+     set procText \
+ 	[ ::logger::utils::createLogProc \
+ 	      -procName $procName \
+ 	      -conversionPattern $conversionPattern \
+ 	      -category $service \
+ 	      -outputChannel $outputChannel \
+ 	      -priority $level ]
+     set myProcNameVar $procName
+     return $procText
+ }
+   	 
+ 
+ 
+ 
  ##Internal Procedure Header
  # $Id: loggerAppender.tcl,v 1.1 2005/09/28 21:14:31 andreas_kupries Exp $
  # Copyright (c) 2005 Cisco Systems, Inc.
***************
*** 328,334 ****
  }
  
  
! package provide logger::appender 1.2
  
  # ;;; Local Variables: ***
  # ;;; mode: tcl ***
--- 440,446 ----
  }
  
  
! package provide logger::appender 1.3
  
  # ;;; Local Variables: ***
  # ;;; mode: tcl ***
Index: loggerUtils.man
===================================================================
RCS file: /cvsroot/tcllib/tcllib/modules/log/loggerUtils.man,v
retrieving revision 1.1
diff -c -r1.1 loggerUtils.man
*** loggerUtils.man	28 Sep 2005 21:14:31 -0000	1.1
--- loggerUtils.man	8 Nov 2005 16:03:49 -0000
***************
*** 1,11 ****
  [comment {-*- tcl -*- doctools manpage}]
  [comment {$Id: loggerUtils.man,v 1.1 2005/09/28 21:14:31 andreas_kupries Exp $}]
! [manpage_begin logger::utils n 1.2]
  [copyright {2005 Aamer Akhter <aakhter@cisco.com>}]
  [moddesc {Object Oriented logging facility}]
  [titledesc {Utilities for logger}]
  [require Tcl 8.2]
! [require logger::utils [opt 1.2]]
  [description]
  [keywords logger appender]
  
--- 1,11 ----
  [comment {-*- tcl -*- doctools manpage}]
  [comment {$Id: loggerUtils.man,v 1.1 2005/09/28 21:14:31 andreas_kupries Exp $}]
! [manpage_begin logger::utils n 1.3]
  [copyright {2005 Aamer Akhter <aakhter@cisco.com>}]
  [moddesc {Object Oriented logging facility}]
  [titledesc {Utilities for logger}]
  [require Tcl 8.2]
! [require logger::utils [opt 1.3]]
  [description]
  [keywords logger appender]
  
***************
*** 58,63 ****
--- 58,67 ----
  
  The priority (level).
  
+ [opt_def -outputChannel channel]
+ 
+ channel to output on (default stdout)
+ 
  [list_end]
  
  
***************
*** 131,137 ****
  Example of usage:
  [nl]
  [example {
!   logger::applyAppender -appender console
    set log [logger::init applyAppender-3]
    ${log}::error "this is an error"
  }]
--- 135,141 ----
  Example of usage:
  [nl]
  [example {
!   logger::utils::applyAppender -appender console
    set log [logger::init applyAppender-3]
    ${log}::error "this is an error"
  }]
Index: loggerUtils.tcl
===================================================================
RCS file: /cvsroot/tcllib/tcllib/modules/log/loggerUtils.tcl,v
retrieving revision 1.2
diff -c -r1.2 loggerUtils.tcl
*** loggerUtils.tcl	11 Oct 2005 19:49:26 -0000	1.2
--- loggerUtils.tcl	8 Nov 2005 16:03:49 -0000
***************
*** 184,189 ****
--- 184,191 ----
  #            the category (service)
  #       -priority <priority>
  #            the priority (level)
+ #       -outputChannel <channel>
+ #            channel to output on (default stdout)
  #
  #
  # Return Values:
***************
*** 294,302 ****
  
      }
  
      set formatText $text
      set outputCommand puts
-     set outputChannel stdout
  
      set procText {
  	proc $opt(-procName) {text} {
--- 296,309 ----
  
      }
  
+     if {[info exist opt(-outputChannel)]} {
+ 	set outputChannel $opt(-outputChannel)
+     } else {
+ 	set outputChannel stdout
+     }
+ 
      set formatText $text
      set outputCommand puts
  
      set procText {
  	proc $opt(-procName) {text} {
***************
*** 376,382 ****
  
  
  proc ::logger::utils::applyAppender {args} {
!     set usage {logger::applyAppender
  	-appender appender
  	?-instance?
  	?-levels levels?
--- 383,389 ----
  
  
  proc ::logger::utils::applyAppender {args} {
!     set usage {logger::utils::applyAppender
  	-appender appender
  	?-instance?
  	?-levels levels?
***************
*** 480,486 ****
  #       to autocreate appenders for newly created logger instances
  #
  # Examples:
! #	logger::applyAppender -appender console
  #	set log [logger::init applyAppender-3]
  #	${log}::error "this is error"
  #
--- 487,493 ----
  #       to autocreate appenders for newly created logger instances
  #
  # Examples:
! #	logger::utils::applyAppender -appender console
  #	set log [logger::init applyAppender-3]
  #	${log}::error "this is error"
  #
***************
*** 523,534 ****
      if {![info exist appender]} {
  	return -code error [msgcat::mc "need to specify -appender"]
      }
!     applyAppender -appender $appender -serviceCmd $log -levels $levels
      return $log
  }
  
  
! package provide logger::utils 1.2
  
  # ;;; Local Variables: ***
  # ;;; mode: tcl ***
--- 530,542 ----
      if {![info exist appender]} {
  	return -code error [msgcat::mc "need to specify -appender"]
      }
!     logger::utils::applyAppender -appender $appender -serviceCmd $log \
! 	-levels $levels -appenderArgs $appenderArgs
      return $log
  }
  
  
! package provide logger::utils 1.3
  
  # ;;; Local Variables: ***
  # ;;; mode: tcl ***
Index: loggerUtils.test
===================================================================
RCS file: /cvsroot/tcllib/tcllib/modules/log/loggerUtils.test,v
retrieving revision 1.2
diff -c -r1.2 loggerUtils.test
*** loggerUtils.test	30 Sep 2005 18:05:57 -0000	1.2
--- loggerUtils.test	8 Nov 2005 16:03:49 -0000
***************
*** 226,231 ****
--- 226,247 ----
      } -match regexp \
  	-output {\[[\d:\/ ]+\] \[applyAppender-4\] \[namespace\] \[error\] this is error}
  
+     ::tcltest::test applyAppender-5 {
+ 	auto apply fileAppend
+     } -setup {
+     } -constraints {
+     } -cleanup {
+     } -body {
+ 	logger::utils::applyAppender \
+ 	    -appender fileAppend -appenderArgs {-outputChannel stderr}
+ 	set log [logger::init applyAppender-5]
+ 	${log}::error "this is error"
+     } -returnCodes {
+ 	ok
+     } -match regexp \
+ 	-errorOutput {\[[\d:\/ ]+\] \[applyAppender-5\] \[namespace\] \[error\] this is error}
+     
+ 
  }
  
  
Index: pkgIndex.tcl
===================================================================
RCS file: /cvsroot/tcllib/tcllib/modules/log/pkgIndex.tcl,v
retrieving revision 1.16
diff -c -r1.16 pkgIndex.tcl
*** pkgIndex.tcl	28 Sep 2005 21:14:31 -0000	1.16
--- pkgIndex.tcl	8 Nov 2005 16:03:49 -0000
***************
*** 13,17 ****
  
  if {![package vsatisfies [package provide Tcl] 8.2]} {return}
  package ifneeded logger           0.6.1 [list source [file join $dir logger.tcl]]
! package ifneeded logger::utils    1.2   [list source [file join $dir loggerUtils.tcl]]
! package ifneeded logger::appender 1.2   [list source [file join $dir loggerAppender.tcl]]
--- 13,17 ----
  
  if {![package vsatisfies [package provide Tcl] 8.2]} {return}
  package ifneeded logger           0.6.1 [list source [file join $dir logger.tcl]]
! package ifneeded logger::utils    1.3   [list source [file join $dir loggerUtils.tcl]]
! package ifneeded logger::appender 1.3   [list source [file join $dir loggerAppender.tcl]]
