Search into your coldfusion log files

Its a small search tool that could come handy if you have multiple coldfusion servers, or you have lots of things running on your server.

You need to enter the Ip address of your server. In my case all the servers are happened tp be on windows platform and installed in C:/ . Also make sure the server you are running this code should be able to access other servers.

<cfif structkeyexists(form,"submit")>
    <Cfset servervalue = form.server>
    <Cfset lfvalue = form.lf>
    <Cfset termvalue = form.term>
    <Cfset conditionvalue = form.condition>
    <Cfset nottermvalue = form.notterm>
<Cfelse>
    <Cfset servervalue = ''>
    <Cfset lfvalue = ''>
    <Cfset termvalue = ''>
    <Cfset conditionvalue = ''>
    <Cfset nottermvalue = ''>
</cfif>

<Cfform name="logdetails" id="logdetails" action="log.cfm">
    <table>
        <tr>
            <td>CF Server</td>
            <td><cfinput type="text" name="server" id="server" required="yes" message="Please enter the value" value="#servervalue#" /></td>
        </tr>
        <tr>
            <td>Log File Name</td>
            <td>
                <select name="lf" id="lf">
                    <option id="lf1" value="scheduler.log" <cfif lfvalue eq 'scheduler.log'>selected </cfif> >scheduler.log</option>
                    <option id="lf2" value="application.log" <cfif lfvalue eq 'application.log'>selected </cfif>>application.log</option>
                    <option id="lf3" value="eventgateway.log" <cfif lfvalue eq 'eventgateway.log'>selected </cfif>>eventgateway.log</option>
                    <option id="lf4" value="mail.log" <cfif lfvalue eq 'mail.log'>selected </cfif>>mail.log</option>
                    <option id="lf5" value="mailsent.log" <cfif lfvalue eq 'mailsent.log'>selected </cfif>>mailsent.log</option>
                    <option id="lf6" value="server.log" <cfif lfvalue eq 'server.log'>selected </cfif>>server.log</option>
                </select>
            </td>
        <tr>
            <td>Search Term</td>
            <td>
                <cfinput type="text" name="term" id="term"  value="#termvalue#"/>
                <select name="condition" id="condition">
                    <option value="exact" <cfif conditionvalue eq 'exact'>selected </cfif>>Exact</option>
                    <option value="or" <cfif conditionvalue eq 'or'>selected </cfif>>OR</option>
                    <option value="and" <cfif conditionvalue eq 'and'>selected </cfif>>AND</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Should not contain</td>
            <td>
                <cfinput type="text" name="notterm" id="notterm" value="#nottermvalue#"/>

            </td>
        </tr>
        <tr>
            <td><cfinput type="submit" name="submit" id="submit" /></td>
        </tr>
    </table>
</cfform>
    <Cfoutput>

        <cfif structkeyexists(form,"submit")>

            <cfif FileExists('\\#form.server#\C$\ColdFusion8\logs\#form.lf#')>
                <cfset pathToFindLog = '\\#form.server#\C$\ColdFusion8\logs\#form.lf#'>
            <cfelseif FileExists('\\#form.server#\C$\CFusionMX7\logs\#form.lf#') >
                <cfset pathToFindLog = '\\#server#\C$\CFusionMX7\logs\#form.lf#'>
            <cfelseif FileExists('\\#form.server#\C$\ColdFusion9\logs\#form.lf#')>
                <cfset pathToFindLog = '\\#form.server#\C$\ColdFusion9\logs\#form.lf#'>
            <cfelseif FileExists('\\#form.server#\ColdFusion\logs\#form.lf#')>
                <cfset pathToFindLog = '\\#form.server#\ColdFusion\logs\#form.lf#'>
            <cfelse>
                <cfset pathToFindLog = 0>
            </cfif>    

            <cfif pathToFindLog neq 0>
                <cffile action="Read" file="#pathToFindLog#" variable="logvar">
                <Table border="1">
                    <tr>
                        <td><strong>Severity</strong></td>
                        <td><strong>ThreadID</strong></td>
                        <td><strong>Date</strong></td>
                        <td><strong>Time</strong></td>
                        <td><strong>Message</strong></td>
                        <td><strong>Application</strong></td>
                    </tr>

                    <cfloop list="#logvar#" delimiters="#chr(13)##chr(10)#" index="i">
                        <Cfset i = rereplace(i,',,',', ,','ALL')>
                        <Cfset show = 1>
                        <cfset msg = ListGetAt(i,6,'","')>
                        <cfset continue = 1>

                        <cfif form.notterm neq ''>
                            <cfif findnocase('#form.notterm#',msg)>
                                <cfset show = 0>
                                <cfset continue = 0>
                            </cfif>
                        </cfif>

                        <Cfif continue and form.term neq ''>
                            <Cfset show = 0>
                            <Cfif form.condition eq 'exact'>
                                <cfif findnocase('#form.term#',msg)>
                                    <cfset show = 1>
                                    <cfset term1 = "<strong style='color:blue'>"&form.term&"</strong>" >
                                    <cfset msg = replacenocase(msg,term,term1,'ALL')>
                                </cfif>

                            <cfelseif form.condition eq 'OR'>
                                <cfloop list="#form.term#" delimiters=" " index="c">
                                    <cfif findnocase('#c#',msg)>
                                        <cfset show = 1>
                                        <cfset c1 = "<strong style='color:blue'>"&c&"</strong>" >
                                        <cfset msg = replacenocase(msg,c,c1,'ALL')>
                                    </cfif>
                                </cfloop>
                            <cfelseif form.condition eq 'AND'>

                                 <cfloop list="#form.term#" delimiters=" " index="c">

                                    <cfif findnocase('#c#',msg)>
                                        <cfset show = 1>
                                        <cfset c1 = "<strong style='color:blue'>"&c&"</strong>" >
                                        <cfset msg = replacenocase(msg,c,c1,'ALL')>
                                    <cfelse>
                                        <cfset show = 0>
                                        <cfbreak>
                                    </cfif>
                                </cfloop>
                            </cfif>
                        </Cfif>

                        <cfif show>

                            <tr>
                                <td>#ListGetAt(i,1,'","')#</td>
                                <td>#ListGetAt(i,2,'","')#</td>
                                <td>#ListGetAt(i,3,'","')#</td>
                                <td>#ListGetAt(i,4,'","')#</td>
                                <td>#msg#</td>
                                <td>#ListGetAt(i,5,'","')#</td>
                            </tr>
                        </cfif>
                    </cfloop>

            <cfelse>
                No infor for <Cfdump var="#form#">
            </cfif>

        </cfif>

    </Cfoutput>

Above code is not fully optimized. Any suggestions or questions are welcomed!

How to change MySql privileges for users

To find out the permissions that users have on MySql server

select * from mysql.user
where host like 'X.X.X.X'

To Update the privileges

update mysql.user
set Select_priv = 'Y', Insert_priv='Y',Update_priv='Y'
where host like 'X.X.X.X';

flush privileges;

Don’t forget to flush the privileges, it just clears out the cache of MySql privileges.

Complete list of privileges for MySql users:
http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html

Exporting data in mysql 5.5 innoDB

I used to export my data using option MySQL Admin -> data export/restore -> export to self-contained file, for MyIsam.

But when I switched over to InnoDB and option checked for ‘innodb_file_per_table’ and did my data export using self contained file, and imported it back to other mysql 5.5 machine. It created only one innodb data file for all my database table.

Solution for keeping separate .ibd files for all DB is to check ‘Export to dump project folder’ and then import that folder. Doing this will keep one innodb file per table.

How to play counter strike like games on 64 bit windows machine

Yes, it is possible to play game like counter strike, half-life in 64 bit windows. I am playing condition zero on my Windows 7 home premium 64 bit machine.

Please follow below steps to avoid error message like ‘available memory less than 15 mb’ :
1) Right click on Application(.exe) file of your games [like czero.exe]
2) Click ‘Properties’.
3) Go in ‘Compatibility’ tab.
4) Choose Windows XP Service pack 2 as compatibility mode and Apply the setting.
5) Now you are all set to play ~Frags On~

Importing all emails from one gmail account to another

Its very easy to do:

Step1: Email account from which you have to fetch of all emails
a) Go to top right of page. Click on ‘Settings‘.
b) Under ‘Settings‘, click on tab names ‘Forwarding and POP/IMAP‘.
c) Inside ‘POP Download‘ click on the ‘Enable POP for all mail (even mail that’s already been downloaded)
d) Click on ‘Save changes‘ button at bottom.

Step2: New Emails account in which you have to import all emails from old account:
a) Go to top right of page. Click on ‘Settings’.
b) Under ‘Settings‘, click on tab names ‘Accounts and Import‘.
c) Now click on very first button named ‘Import mail and contacts‘. It will open a pop-up window asking your username first then your password. Its very simple just keep on filling information and clicking continue.(NOTE: Allow pop-up here if your browser is blocking it)
d) You are done. All emails backup will be done in back-end. Time for backup depend upon the number of emails you import. In my case there were around 5550 emails and it took 2 days to import all emails.

Forwarding and POP/IMAP

Unwanted cfscript tag in xmlhttlrequest for cfchart in IE

I wanted to refresh whole div containing cfchart with updated chart using simple xmlHttpReq. I simply write another .cfm page having new charts with which i replace chart in my calling .cfm page. It worked fine in Firefox n safari, but i can’t see any updated chart in IE, whole div was blank. There was not even any java script error shown. Problem was that IE inserts tag at the top of html code. So all the html beneath that is not displayed in IE. Below code will solve that purpose.
All it does is replace any found in the xmlHttp.responseText

xmlhttp.onreadystatechange=function()
{
  if(xmlhttp.readyState == 4 && xmlhttp.status==200)
  {
     var res = xmlhttp.responseText;
     res = res.replace(new RegExp("[<||\>]","gi"),"");
     document.getElementById("charts").innerHTML = res;
  }
}

Happy Birthday Ankur

Ankur Saxena, I met him in Jan 2008. We use to play for same team ‘Trojan Tiger’. Its his birthday today, I wish him all the luck and hope his year turn out to be greatest of all.

He is a very good at heart. He likes ‘billiya’ (cat) a lot. Bcoz his nick name is ‘Billi ka Bacha’ lolz.. He is 25 now. And will be married to Dheera in Jan 2011.

When it comes to cricket he is a very good batsman. Good keeper – almost always takes best keeper award at cromwell (USC internal cricket series) and a good bowler too.

Happy Birthday bro,,,

Coldfusion useful tag – cfsavecontent

I found cfsavecontent tag very helpful. There are two cool things about this tag:

1) you don’t have to use ‘&’ (ampersand) to concatenate string anymore. Just put them inside cfsavecontent.

2) you can loop thorough query or any collection object in coldfusion and save the result in one variable. And that variable can be used in many ways especially when you are running an ajax application and want result jason format.

Usage:

<cfsavecontent  variable="detailTable" > 

<tr style="font-weight:bold; background-color:#FFFF9B" >

    <td width="11%"><strong>Column1</strong></td>

    <td width="10%"><strong>Column2</strong></td>

    <td width="10%"><strong>Column3</strong></td

    <td width="10%"><strong>Column4</strong></td>

    <td width="10%"><strong>Other</strong></td>

</tr>

<Cfset r1= 0>

<Cfset r2= 0>

<Cfset r3= 0>

<Cfset r4= 0>

<Cfset Other = 0>

<cfloop query="name_of_query">

<tr onMouseOver="this.style.backgroundColor='##FFFFDD'" onMouseOut="this.style.backgroundColor='##FEFEFE'" >

    <td><strong>#result1#</strong><Cfset r1= r1+ result1></td>

    <td>#result2#<Cfset r2= r2+ result2></td>

    <td>#result3#<Cfset r3= r3+ result3></td>

    <td>#result4#<Cfset r4=  r4+ result4></td>

    <td>#other#<Cfset ot=  ot+ other></td>

</tr>

</cfloop>

</cfsavecontent>

And best part is that you can you variable that you used to add like r1,r2,r3… etc.. in the rest of the coldfusion script.