⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loging.tcl

📁 Linux下的MSN聊天程序源码
💻 TCL
📖 第 1 页 / 共 4 页
字号:
		if {$answer == "yes"} {				global webcam_dir						catch { file delete [file join ${webcam_dir} $date ${email}.cam] }		}		return 1	}	#///////////////////////////////////////////////////////////////////////////////	# ClearAllLogs ()	# Deletes all the log files	proc ClearAllLogs {} {				set parent "."		catch {set parent [focus]}		set answer [::amsn::messageBox "[trans confirm]" yesno question [trans clearlog3] $parent]		if {$answer == "yes"} {			global log_dir			catch { file delete -force ${log_dir} }			create_dir $log_dir		}	}	proc ClearAllCamLogs {} {				set parent "."		catch {set parent [focus]}		set answer [::amsn::messageBox "[trans confirm]" yesno question [trans clearwebcamlogs] $parent]		if {$answer == "yes"} {			global webcam_dir			catch { file delete -force ${webcam_dir} }			create_dir $webcam_dir		}	}	#///////////////////////////////////////////////////////////////////////////////	#Events logging	proc OpenLogEvent { } {		StartLog eventlog	}	proc CloseLogEvent { } {		close [LogArray eventlog get]		LogArray eventlog unset	}		#Log Events	proc EventLog { txt } {		::log::OpenLogEvent		set fileid [LogArray eventlog get]		catch {puts -nonewline $fileid "\|\"LGRA[timestamp] \|\"LNOR: $txt\n" }		::log::CloseLogEvent	}	proc event { event name {status ""} } {		switch $event {			connect {				set eventlog "$name [trans online]"			}			disconnect {				set eventlog "$name [trans offline]"			}			email {				set eventlog "[trans email] $name"			}			state {				set eventlog "$name [trans $status]"			}		}		if {[::config::getKey display_event_$event]} {			set eventmenu "[clock format [clock seconds] -format "%H:%M:%S"] : $eventlog"			.main.eventmenu.list list insert 0 $eventmenu			if { [.main.eventmenu.list list index end] > 100 } {				.main.eventmenu.list list delete 100 end			}			.main.eventmenu.list select 0		}		if {[::config::getKey log_event_$event]} {			::log::EventLog $eventlog		}	}	#Check if an event display is activated	proc checkeventdisplay { } {		if { [::config::getKey display_event_connect] || [::config::getKey display_event_disconnect] || [::config::getKey display_event_email] || [::config::getKey display_event_state] } {			return 1		} else {			return 0		}	}	#Check if an event log is activated	proc checkeventlog { } {		if { [::config::getKey log_event_connect] || [::config::getKey log_event_disconnect] || [::config::getKey log_event_email] || [::config::getKey log_event_state] } {			return 1		} else {			return 0		}	}	#Display/log when we connect if we display/log an event	proc eventlogin { } {		global eventdisconnected		if { $eventdisconnected } {			set eventdisconnected 0			if { [::log::checkeventdisplay] } {				.main.eventmenu.list list insert 0 "[clock format [clock seconds] -format "%H:%M:%S"] : [trans connectedwith [::config::getKey login]]"			}			if { [::log::checkeventlog] } {				::log::OpenLogEvent				set fileid [LogArray eventlog get]				catch {puts -nonewline $fileid "\|\"LRED\[[clock format [clock seconds] -format "%d %b %Y %T"]\] [trans connectedwith [::config::getKey login]]\n"}				::log::CloseLogEvent			}		}	}	#Display/log when we disconnect if we display/log an event	proc eventlogout { } {		global eventdisconnected		if { [::log::checkeventdisplay] } {			.main.eventmenu.list list insert 0 "[clock format [clock seconds] -format "%H:%M:%S"] : [trans disconnectedfrom [::config::getKey login]]"			.main.eventmenu.list select 0		}		if { [::log::checkeventlog] } {			::log::OpenLogEvent			set fileid [LogArray eventlog get]			puts -nonewline $fileid "\|\"LRED\[[clock format [clock seconds] -format "%d %b %Y %T"]\] [trans disconnectedfrom [::config::getKey login]]\n\n"			::log::CloseLogEvent		}	}	#///////////////////////////////////////////////////////////////////////////////	# Log what concerns filetransferts	proc ftlog {email txt} {		if { [::config::getKey keep_logs] } {			set fileid [LogArray $email get]			if { $fileid == 0 } {				StartLog $email				set fileid [LogArray $email get]				puts -nonewline $fileid "\|\"LRED\[[trans lconvstarted [clock format [clock seconds] -format "%d %b %Y %T"]]\]\n"			}			puts -nonewline $fileid "\|\"LGRA[timestamp]\|\"LGRE $txt\n"		}				#Postevent when filetrasfer is logged		set evPar(email) email		set evPar(txt) txt		::plugins::PostEvent ft_loged evPar			}	#///////////////////////////////////////////////////////////////////////////////	# Sort the contact by the log size	proc sortalllog { } {		global log_dir		set contactlist [::abook::getAllContacts]				set contactsize [list]		set months "0 January February March April May June July August September October November December"				foreach email $contactlist {						set size 0						set file "[file join ${log_dir} ${email}.log]"						if { [file exists $file] == 1 } {				set size [file size $file]			}						if { [::config::getKey logsbydate] == 1 } {				foreach date [glob -nocomplain -types f [file join ${log_dir} * ${email}.log]] {					set date [getfilename [file dirname $date]]					if { [catch { clock scan "1 $date"}] == 0 } {						set date [clock scan "1 $date"]						set month [clock format $date -format "%m"]						if { [string range $month 0 0] == "0" } {							set month [string range $month 1 1]						}						set month "[lindex $months $month]"						set year "[clock format $date -format "%Y"]"						set date "$month $year"						set file [file join ${log_dir} ${date} ${email}.log]						if { [file exists $file] } {							incr size [file size $file]						}					}				}			}						set contactsize [lappend contactsize [list $email $size]]					}				set contactsize [lsort -integer -index 1 -decreasing $contactsize]				return $contactsize			}	proc sortthismonthlog { } {		global log_dir		set contactlist [::abook::getAllContacts]		foreach email $contactlist {			set file [file join ${log_dir} ${email}.log]			if { [file exists $file] } {				set size [file size $file]			} else {				set size 0			}			set contactsize [lappend contactsize [list $email $size]]		}		set contactsize [lsort -integer -index 1 -decreasing $contactsize]				return $contactsize	}	proc sortmonthlog { month } {		global log_dir				set contactlist [::abook::getAllContacts]				set contactsize [list]				foreach email $contactlist {						set file [file join ${log_dir} ${month} ${email}.log]						if { [file exists $file] } {				set size [file size $file]			} else {				set size 0			}						set contactsize [lappend contactsize [list $email $size]]					}				set contactsize [lsort -integer -index 1 -decreasing $contactsize]				return $contactsize			}	proc getAllDates { } {		if { [::config::getKey logsbydate] == 1 } {			global log_dir						set datelist [list]			set datelisterror [list]						foreach date [glob -nocomplain -types d -path "${log_dir}/" *] {				set idx [expr {[string last "/" $date] + 1}]				set date2 [string range $date $idx end]								if { [catch {					set date2 [clock scan "1 $date2"]					set datelist [lappend datelist $date2]				} ] } {					set datelisterror [lappend datelisterror $date2]				}			}						set datelist [lsort -integer -decreasing $datelist]			set datelist2 [list]			set months "0 January February March April May June July August September October November December"			foreach date $datelist {				set month [clock format $date -format "%m"]				if { [string range $month 0 0] == "0" } {					set month [string range $month 1 1]				}				set month "[lindex $months $month]"				set year "[clock format $date -format "%Y"]"				set date "$month $year"				set datelist2 [lappend datelist2 $date]			}						set datelist2 [concat $datelist2 $datelisterror]						return $datelist2		} else {						return ""					}			}	#///////////////////////////////////////////////////////////////////////////////	# Make a stats window	proc stats { } {		set w .stats				if { [winfo exists $w] } {			raise $w			return		}		toplevel $w				wm title $w "[trans stats]"		wm geometry $w 300x390				set months [::log::getAllDates]				frame $w.select		label $w.select.text -text [trans stats] -font bigfont		combobox::combobox $w.select.list -editable true -highlightthickness 0 -width 15 -bg #FFFFFF -font splainf		$w.select.list list delete 0 end		$w.select.list list insert end "[trans allmonths]"		$w.select.list select "0"		$w.select.list list insert end "[trans thismonth]"				foreach month $months {			$w.select.list list insert end "$month"		}		pack configure $w.select.text -side top			pack configure $w.select.list -side right		pack configure $w.select -side top -fill x -expand false		frame $w.totalsize		label $w.totalsize.txt -text "[trans totalsize] :"		pack configure $w.totalsize.txt -side bottom -fill x		pack $w.totalsize -side top -fill x -expand false		ScrolledWindow $w.list		ScrollableFrame $w.list.sf -constrainedwidth 1		$w.list setwidget $w.list.sf		pack $w.list -anchor n -side top -fill both -expand true		set frame [$w.list.sf getframe]				set contactsize [::log::sortalllog]				set id 0		set totalsize 0		foreach contact $contactsize {			set email [lindex $contact 0]			set size [lindex $contact 1]			if { $size == 0 } {				break			}			incr id			incr totalsize $size			set wlabel "label_$id"			label $frame.$wlabel -text "$id) $email ([::amsn::sizeconvert $size]b)"			pack configure $frame.$wlabel -side top		}				$w.select.list configure -editable false -command "::log::stats_select $id"		$w.totalsize.txt configure -text "[trans totalsize] : [::amsn::sizeconvert $totalsize]b"		#frame $w.button		button $w.close -text "[trans close]" -command "destroy $w"		pack configure $w.close -side bottom -padx 10 -pady 10		#pack configure $w.button -side bottom -fill x -expand true				bind $w <<Escape>> "destroy $w"		moveinscreen $w 30					}	proc stats_select { id wname month} {		set w .stats				set frame [$w.list.sf getframe]				for {set i 1} {$i<=$id} {incr i} {			set wlabel "label_$i"			destroy $frame.$wlabel		}				if { [$w.select.list curselection] == 0} {			set contactsize [::log::sortalllog]		} elseif { [$w.select.list curselection] == 1 } {			set contactsize [::log::sortthismonthlog]		} else {			set contactsize [::log::sortmonthlog $month]		}				set id 0		set totalsize 0				foreach contact $contactsize {			set email [lindex $contact 0]			set size [lindex $contact 1]			if { $size == 0 } {				break			}			incr id			incr totalsize $size			set wlabel "label_$id"			label $frame.$wlabel -text "$id) $email ([::amsn::sizeconvert $size]b)"			pack configure $frame.$wlabel -side top		}				$w.select.list configure -editable false -command "::log::stats_select $id"		$w.totalsize.txt configure -text "[trans totalsize] : [::amsn::sizeconvert $totalsize]b"		$w.list.sf yview moveto 0					}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -