Enabling live logging with Gibraltar? - c#

I'm using Gibraltar for logging.
Is it possible to enable live logging (i.e. observe the logs in real time)? Currently, the only way to view the log seems to be to close the application down.

Summary
With v2.x (current version), its impossible for a console app, and possible with a WinForms app.
With v3.0 (future version), it will be easy. This version is being released in a few months.
Details
The problem is that the current version of Gibraltar is really designed to collect logs behind the scenes, so they can be used to diagnose any application issues. Its not really designed to monitor live logs within an app (although this will change when v3.0 comes out - see below).
If you want a WinForms version with support for live logging, then you can press Ctrl-Alt-F5 to pop up a live logging console which is limited to the current process.
If you want to create a Console version with support for live logging support, I think you're out of luck: its not supported (it needs a windows form in the project for the message pump?). The only way to view the logs is to exit the app so it can flush its logs out.
The Gibraltar hub does offer limited support for live logging: if something happens in the app to trigger a log, the log is dumped to the Gibraltar hub which is then pushed to the Gibraltar analyst. However, its not exactly real time.
According to tech support, v3.0 of Gibraltar will have much better support for live logging, this will be released in a few months. I'm currently using SmartInspect, it seems to do the job.

We're happy to say that Gibraltar 3.0 shipped at the very end of March and has full support for live log viewing, even over weak connections. With Gibraltar 3.0 and later, once you set the configuration option to enable live viewing they will register themselves with the Hub. Then, when you decide you want to view the data from a specific instance of your application the connection will start streaming log data to you. You'll get the last thousand messages (or more, if you configure it that way) immediately and then updates in real time.
You can see a quick demo video of how this works on our blog:
Live Sessions: New in Gibraltar 3.0

Related

How to get the Caller Info from VoIP in real-time in a .NET Application?

I am working on a project which includes a lot of VoIP functions. I don't have access to the source code of the previous system that was being used so I can't dissect it to find out what I need to know. I will describe how the previous system used to work and then ask my question.
First, the old system that we have been using depends on Physical Phones which receive calls over the internet. There is a Desktop App installed on our computer which somehow takes the phone call received by the phone and shows that phone number on the Desktop App. Which uses that number to look up data about the caller. But the problem is that this Desktop App is over a decade old and has not been updated since. So we want to build a new Web Based Application with .NET that will do the same. My question is:
1- How do I fetch the Caller Information From the Physical Phone and use it how I want? The phone being used is SNOM 760 but its possible that other brands or models be used in the future.
2- Let's say that a specific page is always opened on the browser. How do I transfer the caller number to the server and then show a pop up with the information about the caller in that page that's always opened in the browser in a RELIABLE way? What about when that specific page is not opened? Remember that the phone that is receiving this call is not directly in communication with the server. But that is also not a restriction. I read somewhere while researching that I could have my server take the call first and then transfer it to that physical phone. The only restriction is that we use VoIP phones/numbers.
Like I said, I have very vague information on the subject. Any help is appreciated. I've studied that I could use Twillio or other such third party services to achieve this task but I just wanted to know if I can do it myself instead of relying on someone else and hoping they don't shut down their services in the next few years.
Those are a lot of questions jammed into 1 there, I'll try to answer some.
As you already tagged it, TAPI is an option but not very easy to get into. TAPI normally get it's information centrally from the PBX, but in your particular case the SNOM system has the phones themselves connect to a central server to gather the information and distribute it there. You may be able to hook into a proprietary protocol.
Gathering calls on a central server to then distribute them to phones is usually done with an IVR (Interactive voice response). Channeling outside calls through it is easy but the problem with getting your call information from this point is usually you miss the internal calls.
Your website pop-up is not my area of expertise, maybe someone else could comment on the feasibility of that, but personally I would go with a task-tray style app if reliability is your highest priority.

Check for Updates functionality For Windows application

I am using Install shield limited edition to install my WPF application.
My current scenario is like this.
The created set up is available in our website for downloading.
User can download and then Install the set up on their own machines.
I have option to modify the software and will update the modified
installer into the website , so that users will get the updated
software.
My Next step:
In my application I am going to include “Maintenance release (Download Updates)” functionality. So that users can download the latest updations automatically from the software itself.
How Can I do this.? Any help would be appreciated.
Is there any facility in the Install shield for this?
I recommend NAppUpdate. It provides a framework with features for all tasks required for an update process. For example, it lets you check for updates from various sources (Web http / ftp), trigger update checks and replace your binaries with the updated ones.
You still will have to integrate this into your app, so it is not an "out of the box" solution. But my experience is that most out-of-the-box solutions eventually cause headaches due to limited customization possibilities and moreover are rarely free (if this is important to you).
A good introductory article can be found here: The philosophy behind NAppUpdate.
I don't think there is any facility to add that feature through install shield but there is a software update framework for .NET called NetSparkle. You can try that if you want. If you want to implement something on your own then its better to some other websites like code project that provide startup code or similar projects.
Here 's the link for NetSparkle.
There is also a similar question on StackOverflow : Code to check for updates, install new version of app

Time-based trial for an application - how to check when app was downloaded

Is there any way to access the time the app was downloaded (or first launched, etc) as this would be of great help in implementing my trial run feature on my app.
I don't remember how does it stand on the Win8 platform, but for WinPhone7.0/7.5 there's a clear warning/guideline in the official documents from Microsoft, saying:
Do not rely on usage time limited trials to protect your app’s value.
Typically, it is best to protect the value of your full mode app by limiting trial access to key code paths. A user may uninstall and retry an app without restriction so a trial design that offers full mode behavior for a limited time provides only inconvenience as a barrier to reuse.
Source: Creating trial apps for Windows Phone
The problem in time-based trials is very simple: when you uninstall the application, the Phone's operating system will erase it completely. This means, that nothing will be left, not a byte. If you write any data to isostorage, it will be purged upon deletion.
So, if you make a time-base trial and store a "installed date", then the user will simply uninstall the application and install it again, and will be happy to get next free-trial period. If it is OK for you, well, then just be aware of that.
To make a true time-trial you'd need to create some internet service that your application will register to with the phone's/user's UUID, and then the app would need to check at the service to determine whether the trial has passed or have been used up by a previous installation..
What's more, Microsoft Phone Appp guidelines state that generally you should not create an application that "turns off some of its features" at some point of time. This irritates end-users and the makes the whole phone/platform "bad" from the user's point of view, because people don't like to lose what they once had.
IIRC, at some early point of time Microsoft even advised to create two separate applications: one free and without the extra features at all, and one paid with all extra features. Later, TrialModes were included in the Market's workflow and Microsoft's App Licensing API introduced a very easy way to determine if an app works in "free trial" or "fully paid" mode, depending on whether it was downloaded from the market for free or not.
I truly don't know which one is most-recent, so let me paste three:
XNA: http://msdn.microsoft.com/en-us/library/dd282459(v=xnagamestudio.30).aspx
SL: http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.marketplace.licenseinformation.istrial
W8: http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.store.licenseinformation.istrial
If you are trying to implement a trial function within your phone application, why not latch onto the libraries that MS provides?
MSDN Creating a trial application
MSDN Sample code for integrating a trial applicaiton
This is only available for WP7.1, WP7.1+ and WP8 (when written for WP7.1)
Microsoft recommends using the WP8 LicenseInformation class, to do
MSDN LicenseInformation class, WP8
Hope this helps!

Windows embedded 2009 service

I'm developing an application that will be executed in a ThinClient with Windows Embedded 2009. It's written in C# 3.5. But, when I played for the first time with the ThinClient, I noticed that it has a lot of features disabled.
For example, there is no MyPc, or I can't have access to it.
So, my app needs to run when the client is turned on, but I can't find a service manager in embedded 2009.
Is there a way to make my app run every time the client is turned on?, I thought about a service, with automatic start. Can this be done like a windows service with no problems?
And another thing. My app also has to shut down the client. I've found a way to make it, but, I'd like to know if is different in Wndows Embedded.
Btw, the device has no hard disk.
Any other suggestion, will be very appreciated.
Have a nice day.
In the older Embedded there is a "startup"-folder (located on the flash-card containing the win-image)

Monitoring Framework needed

I'm building a big application with a lot of modules, i want to monitor them. Every module has its own different parameters that I'm interested in, ranging from performance, to logical statuses of components.
Eventually i need to concentrate all this information, and to be able to display it. Is there a framework i can use to achieve this? im using .net 3.5
You could try Munin. Once you install it - you simply write some plugins - small programs that will grab values from your application. And print them to command line in the form of values and labels. For example:
NoRDNS.value 10
Breakin.value 1
LogPassPAM.value 0
NoID.value 0
LogPass.value 100
InvUsr.value 23
LogKey.value 0
RootAttempt.value 0
Floats are OK too.
Munin will call the plugins periodically (every 10 minutes by default) and plot beautiful PNG graphs over time, track the min/max/average info, and organize everything in static HTML pages.
For you, probably the biggest problem with Munin would be setting it up on Windows. I never tried it on Windows - for me it works on Linux. Fortunately official website does have some options for Windows - in particular the munin-node-win32 program. You would need it.
Unfortunately, munin-node-win32 will only collect the data. To store (as RDD) and render the graphs (as PNG) you would need the Munin server. That can run locally or remotely. For running it locally, Cygwing may be and option but a sure way it to setups a virtual machine (see QUEMU or VirtualBox) running a simple setup of Ubuntu or Debian. In there, setting-up the Munin server is very easy - simply, run:
sudo aptitude install munin
and edit /etc/munin/munin.conf - placing the local IP address of the host where your application and munin-node are running. You don't even need to restart anything - Munin will be already configured in CRON so it will read the config file and do its job every 10 minutes as long as the VM is running. Just in case something goes wrong - the logs will be in the usual /var/log folder.
It looks pretty involved but it's easier than writing your own monitoring and graphing framework. I have a close relative who re-invented the wheel and wrote a monitoring/plotting system from scratch in .NET but I would trust Munin much more than his code.
At the end of the day you would point your web-browser to a private network IP address of the VM and get a nice performance report that looks like this.
Try wolfpack.codeplex.com - .net windows service based monitoring framework - fully extensible & ships with loads of plugins!
Provides passive monitoring (polling for data) and active - you app can pump data/kpis/stats into wolfpack. It also provides a geckoboard data api so you can get rich business dashboards in an instant.
PS: I wrote wolfpack!
You can use appfirst product. They have a way of discovering network flow and display what you described. This might solve your question.

Categories

Resources