If you are using .NET you can also use the Microsoft.SqlServer namespace to get most of this data programatically. For example, I have used Microsoft.SqlServer.Rmo to get the status of subscribers to a merge replication publication. Depending on what you are using it for, you may be able to avoid accessing (and presumably parsing?) the logs directly.
Check out the Microsoft.SqlServer.Management.Smo.Agent namespace for data specific to the SQL agent.
By using the Microsoft.SqlServer.Management.Smo.Agent namespace, you can do the following:
- View and modify SQL Server Agent settings.
- Set up and manage operators.
- Set up and manage alerts based on system messages or performance
conditions.
- Set up and manage jobs with multiple steps and schedules.
- Manage proxy accounts for the subsystems on which jobs run.
- Manage jobs that run on multiple servers.