Home

Introduction to electronic Flight Journals

Overview

An electronic Flight Journal (eFJ) is just a text file containing personal flight records. Data is recorded using a simple, intuitive scheme that is easy for both humans and computers to manipulate. Flexible tools are provided for working with files that follow this scheme, including the ability to generate an FCL.050 compliant logbook as a standalone HTML file and, for easyJet pilots, the ability to extract the vast majority of required data from downloaded AIMS detailed rosters. These tools are open source (distributed under GPLv3) and cross platform. They are also available as web applications that can be accessed via your browser if you don’t wish to install locally.

Who are eFJs suitable for?

I will be assuming that the reader understands the term “text file“ and knows how to use a text editor to create and edit one. If this is not the case, you should probably stop reading now.

There are a lot of advantages to storing your personal flight records in a text file. These include:

If these sound like advantages to you, storing your personal flight records in an eFJ may be worth looking into. It does require a certain amount of self-reliance and technical ability, so it is definitely not suitable for everyone.

History

I started out recording my flying in a paper logbook. When I had around 50 hours logged, I spent a rainy afternoon typing everything into a spreadsheet to check my arithmetic. I discovered that I am not great at adding up in base sixty.

A few years down the line, my spreadsheet was getting a bit large and cumbersome, and I switched to using a database. I wanted a way of getting data into this database with an absolute minimum of effort and came up with a scheme for recording it in a text file that could then be parsed with a very simple script to create the necessary SQL commands.

On joining easyJet I gained access to electronic records of my flights from our rostering system, AIMS. I wrote a program that extracted this data into a text file that followed the same scheme that I was using for the database, reducing my logbook admin burden to near zero. I extended the scheme to allow capture of extra data that I would not have bothered with for manual entry such as recording of duty times and all crew names; a text file with this extended scheme is what I herein refer to as an eFJ.

After a further decade or so, I came to the conclusion that the database was not really bringing enough utility to warrant the complexity that it introduced and I dropped it in favor of using the eFJ as my primary data source. This worked really well; the scripts I was using to create reports were greatly simplified and it enabled me to do things like version control my logbook on github.

I recently started noticing that some colleagues were not having a great time with electronic logbooks. While my solution is certainly not suitable for all, it was not much work to polish up and document the tools I was using and release the methodology for anyone that wanted to give it a try. Your mileage may vary, but it has worked very well for me.

A brief tutorial

This tutorial will briefly describe how to create eFJ entries manually. If you are an easyJet pilot there is a tool available (with an online version) that means you won‘t need to do most of this, but it is worth knowing how to do it and that it can be done without too much difficulty if the need arises in the future. Non-easyJet pilots will have to do manual entry unless and until a suitably skilled pilot at your airline creates a comparable tool.

In this tutorial, we will create new eFJ entries using a couple of days of my flight records to demonstrate both the general ideas and some of the sector flags that can be used. Full details of the eFJ scheme can be found at https://hursts.org.uk/efjdocs/format.html.

Using the eFJ scheme for your data does not prescribe any particular workflow or file system structure; it merely means that text files that follow the scheme can be created and processed by the supplied tools. For the purposes of this tutorial I will assume that you keep your flight records in a single, “master” eFJ and that you are going to create the new entries in a new text file that you will append to the master once you're happy with it.

Firstly, then, create a new, empty, text file with your favourite text editor. On the first line, enter a date in this form:

2024-02-04

This is an ISO 8601 date, which removes any ambiguity around what is a day and what is a month.

On the next line, enter details of the aircraft registration and type, separated by a colon:

G-EZBY:A319

On the next line enter details of the first sector of the day:

BRS/GLA 0702/0818 m

Hopefully this is fairly self-explanatory other than the m. The m means that you were pilot monitoring for this flight, and should not therefore log the landing.

Next, we enter the second sector:

/BHX 0848/1037  # Diversion due weather

The origin airport, GLA has been omitted — the parser assumes that your origin airport was the previous destination airport if this is done. This is optional: putting GLA/BHX is also fine, and makes the records more readable. A tool (described below) is provided to expand the entry to the long form if you prefer to type the short forms but read the long forms.

Comments relating to a sector are included by inserting a #. Anything after this is a sector specific comment. Full line comments that are not specific to a sector can also be added by placing a # at the start of a line — the # and everything after it will be ignored by the parser in this case.

Now, add the last sector of the day:

/BRS 1300/1341

For the next day’s flying, add:


+
G-UZHI:A320
BRS/FNC 0708/1045
/ 1127/1451 m

Note that both the origin and destination airfield can be omitted for a route reversal and that blank lines can be added at will to aid readability.

A + is used instead of an ISO date — this means add 1 day to the previous date. If you wanted to add three days, you would use +++. Again, this is completely optional — entering the full date also works fine.

The end result of all this should look like this:

2024-02-04
G-EZBY:A319
BRS/GLA 0702/0818 m
/BHX 0848/1037  # Diversion due weather
/BRS 1300/1341

+
G-UZHI:A320
BRS/FNC 0708/1045
/ 1127/1451 m

The parser is perfectly happy dealing with data in this form, but it could be nicer for a human to read. Save the file, then go to https://hursts.org.uk/efj in your web browser. This is the web application interface of the eFJ toolkit; it is also simple to install this toolkit on your computer, which gives you access to both a command line and a graphical interface as you prefer.

Click the “Load“ button to upload the text file you just saved. You can also drag and drop the text file onto the page or paste from the system clipboard by right clicking in the blank area on the right of the page if you prefer. The text of the eFJ should now be shown on the right hand side of the page.

Click the “Expand” button in the “Modify” group. This should modify the text to look like this:

2024-02-04
G-EZBY:A319
BRS/GLA 0702/0818 m
GLA/BHX 0848/1037  # Diversion due weather
BHX/BRS 1300/1341

2024-02-05
G-UZHI:A320
BRS/FNC 0708/1045
FNC/BRS 1127/1451 m

This fills in the assumed data, making it a bit easier for a human to read.

Now click the “Night” button in the same group. You should get:

2024-02-04
G-EZBY:A319
BRS/GLA 0702/0818 n:18 m
GLA/BHX 0848/1037  # Diversion due weather
BHX/BRS 1300/1341

2024-02-05
G-UZHI:A320
BRS/FNC 0708/1045 n:6
FNC/BRS 1127/1451 m

This has added flags for regulatory night flying. n:18 means 18 minutes of the flight took place in regulatory night hours. The toolkit can calculate this value so long as the airfields are specified with IATA (i.e. three letter) codes.

So far, we have assumed that these records belong to a Captain and thus everything is P1 flying. If you are a First Officer, you need to record whether flights are P1S or P2. Click the “FO” button, and you will get:

2024-02-04
G-EZBY:A319
BRS/GLA 0702/0818 p2 n:18 m
GLA/BHX 0848/1037 p1s # Diversion due weather
BHX/BRS 1300/1341 p1s

2024-02-05
G-UZHI:A320
BRS/FNC 0708/1045 p1s n:6
FNC/BRS 1127/1451 p2 m

The FO tool uses the m flag to determine the role for the flight. First Officers have the option of either recording the roles directly (i.e. just add a p1s or p2 flag to the relevant sectors) or to save a bit of effort with this tool.

For a logbook, a First Officer must also record the Captain’s name. Add the line:

{ CP:Smith }

under the first date, so that the final eFJ now looks like:

2024-02-04
{ CP:Smith }
G-EZBY:A319
BRS/GLA 0702/0818 p2 n:18 m
GLA/BHX 0848/1037 p1s # Diversion due weather
BHX/BRS 1300/1341 p1s

2024-02-05
G-UZHI:A320
BRS/FNC 0708/1045 p1s n:6
FNC/BRS 1127/1451 p2 m

You can now either use the “Save” button to download this modified version of your eFJ or use the “Copy” button to copy it to the system clipboard. All the standard browser controls also work, so selecting the text and right clicking etc. are also options for getting this data out of the browser. Insert this data at the end of your master eFJ and you are done.

The eFJ toolkit includes the ability to summarise your flying in various ways and to create an FCL.050 compliant logbook. The web application interface does this for whatever is in the text area on the right, so, while you would generally want to do this for your master eFJ we can also see the results on the snippet we have created. Click the “FCL.050 Logbook” button in the “Download“ group. Unless you have used the web application in the same browser before, you will get a dialog box requesting you to specify the class of each type. Click the buttons until they both say “Multi Crew” then click “Save“. An HTML file will be downloaded to a location determined by your web browser. This is a standalone HTML file (i.e. it has no dependencies), so you can move it around at will and open it with any web browser. It is also simple enough to be opened with high fidelity in a spreadsheet if you want to do some ad hoc analysis.

This HTML logbook can be converted to PDF using your browser’s print options, but for an even better experience try Prince XML. This is free for personal use and produces output of very high quality — if you fancied creating a hard copy logbook, this in combination with something like Lulu will produce very professional results.

The final thing we will look at is the summary. Click the “Summary“ button in the “Download“ group and, again, an HTML file will be downloaded to a location determined by your browser. Like the logbook, this file has no dependencies and is simple enough to be opened in a spreadsheet.

For further information, click on the “Help” button in the web interface. This will take you to the toolkit’s documentation which included details of all the tools, how to install locally and a link to the full description of the eFJ scheme.

Extracting an eFJ from AIMS

(easyJet pilots only)

You can download copies of your past rosters from AIMS which contain the details of your flights. Log on to eCrew on a desktop or laptop computer and select “Crew Schedule — Detailed” from the menu. Fill in the start date and period, ensure UTC is selected and click “Show Schedule”. You will see a link with the text “To save a copy of your report locally on your PC, please right click and select "Save Target As..” which you can use to download the roster as an HTML file.

You can now go to https://hursts.org.uk/aims and upload this HTML file. First ensure the Output Format is selected as eFJ, then click “Load Roster“. You can also drag and drop the file if you prefer. An eFJ version of the roster will appear on the right, which can be downloaded with the “Save” button or copied to the system clipboard with the “Copy All” button.

There are a couple of extra things that this provides that were not mentioned in the tutorial: the whole crew is listed and the duty times are recorded, including things like standby duties. If you see ?-????:???, this means that the airframe lookup failed to find the aircraft used for the sectors in question; you will have to enter these manually. This usually only happens with very recent flights or flights that are in the future.

This process is not infallible. In particular if a duty straddled midnight at the beginning or end of the roster then the required data is simply not available. Always check that the results are what you expect.

If the extraction fails, please email me a copy of the roster that caused the problem at hursts.org+aims-extract@gmail.com.