Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
In ColdFusion 8, it's always been difficult to get good debugging and test information on production systems unless you have total control over the server running your application. But even then getting good error information involved emailing yourself errors or some other method of forcing the error information to your local machine so that it wasn't displayed to the people viewing your website. In ColdFusion 9, we get access to two more settings that will help us with our debugging. In this video, I'm going to show you how to get debugging information for your specific IP through the application CFC as well as how to enable and disable per request exception handling when you simply need to see those errors in the browser.
So in the Chapter2 folder, we will open robustexception.cfm. This just has a query and a dump in it. So if I preview, you can see it's dumping all of the information, but what I'd really like to be able to see is the debugging information, not just what I see from cfdump. So to do this, we will switch over to Safari and take a look at the ColdFusion Administrator. Under the debugging and logging section, in Debug Output, we are going to go ahead and enable robust exception and debugging output at the same time and submit those changes.
If I go over here to Debugging IP Addresses, we can see it already has two IP Addresses in here. I'm going to go ahead and click Add Current, just to make sure that mine is in there. So, you can see my IP Address is 1%0, so now I have my IP address in here. If I switch over to CF Builder and click on the Safari tab, you can see I now have my debugging information. So this is all well and good, but the issue with this is that now anybody with my IP, let's assume I was behind a Firewall and was just viewing my site, anybody with my IP address would be able to see the debugging information.
So let's go back to the ColdFusion Administrator and remove my IP address here. So I will select my IP and click Remove Selected and let's just make sure that that is now disappeared and yes, we can see it has now gone away. Now, what I want to be able to do is to turn that on, on a per request basis. So I go back to CF Builder and open the Application.cfc file, I can add a new this scope attribute called this.debugging IP addresses.
I can enter in a comma-separated list of IP addresses that are allowed to see debugging information. So I'm going to enter in my really long IP address here. I'll save the application.cfc, switch back to my robustexception.cfm and reload and we can now see that I can see all my debugging information. Now because this is a 'this' scope variable, I can put it inside some condition that determines when I'm allowed to see it.
So let's say if StructKeyExists(URL "showdebugging"). So, now the only time I should see debugging information is when I actually put the showdebugging URL variable into the address bar. Now because I can't manipulate the URL inside the CF Builder's preview, we will switch over to Safari and take a look there. So we'll go to localhost, Chapter2, robustexception.
You can see I'm not seeing any debugged information, but I will add showdebugging onto the end and now we can see all of our debugging information. Now, if you wanted to add multiple IP addresses to the debugging output, you could just simply put in a comma and put as many IP addresses in here as you want. Now because this list of IP addresses is like any other Cold Fusion list, they can be generated from a database, a query, some other variable however you want to set it up.
It's very easy to fill this debugging IP addresses value with what you want to see. Now the other thing we can do is also enable robust exceptions on a per request basis. So let's cause a problem here. In my robustexception.cfm, I'm going to put in a bad table name. If I switch back over to my page in Safari and reload, you can see I'm getting my big fat robustexception. So let's turn that off in the ColdFusion Administrator. Go back to Debug Output Settings and turn it off.
Keep things nice and safe in our production environment and reload this page. Now, we get our much smaller exception information but what I can do inside of my application.cfc is I'm going to put inside the same if statement. I can cfset this.Enablerobustexception = true. Now, I will switch back to Safari and take off the show debugging and load the page. You will see it's still showing the simple debug output.
Add it back and now I get my robust exception because of that new enable robust exception attribute under this scope. Now, there's two things to keep in mind using these new 'this' scope variables. The first is security. Make sure that any time you enable these that they are secured, that you can ensure that no one is going to be able to force robust exceptions or to force their IP address into your allowed list without your knowledge. The second thing to remember is security. Always, always, always lock these down.
So, in Cold Fusion 9, you now have the ability to programmatically enable debugging and exception handling on a per request basis. This will make debugging production systems much easier, but make sure that you have the proper protections in place to ensure you don't give away the secret sauce for your application.
Get unlimited access to all courses for just $25/month.Become a member
82 Video lessons · 102133 Viewers
61 Video lessons · 88852 Viewers
71 Video lessons · 72665 Viewers
56 Video lessons · 104305 Viewers
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.
Your file was successfully uploaded.